这段c语言代码问题在哪?

来源:百度知道 编辑:UC知道 时间:2024/09/28 07:57:53
#include <iostream>
using namespace std;

struct Node{
struct Node *next;
int value;
};

int InitList(Node *current,int n){
Node *previous,*first;
previous=current;
first=current;

current->value=1;
int num=n;
for(int i=1;i<=n;i++){
previous->value=current->value;
current=current->next;
current->value=previous->value+1;
}

current->next=first;

return 1;
}

void main(){
Node *N=new Node();

InitList(N,5);
}

这是初始化一个环状链表的程序,并要链表中元素的值赋为1 2 3 4 5.
编译通过,但是EXECUTE就会出错(能运行程序,但是运行后提示.exe文件遇到问题需要关闭)。那么问题出在哪呢?谢谢大家~~~

// 帮你修改了一些,增加了两个函数,你运行看看就知道了.
#include <iostream>
using namespace std;

struct Node{
struct Node *next;
int value;
};

// 生成链表,返回指向链表第一个节点的指针
Node * InitList(int n){
int i;
Node * pNode,* pFirstNode,*pCurrent=NULL;
for (i=0;i<n;i++)
{
pNode = new Node();
pNode->value = i+1;//为节点付值

if (pCurrent == NULL) // 如果当前节点为空
{
pFirstNode = pNode;// 将此节点保存为第一个节点,方便以后访问
} else { // 添加后续节点
pCurrent->next = pNode;//为当前节点添加后续节点
}
pCurrent = pNode;//将新增加(后继)的节点设置为当前节点
pCurrent->next = pFirstNode;//由于是环链表,将最新的后继节点的next指向第一个节点
}

return pFirstNode;
}

// 释放链表所占用的内存资源
int FreeList(Node *pCurrent/*表示为当前节点*/)
{
Node * pCurNode,* tmpNode;
pCurNode = pCurrent;
do
{
tmpNode = pCurrent;
pCurrent = pCurrent->next;
delete tmpNode;

}