如何显示使用虚拟节点的链接列表


typedef struct Node *ptrToNode;
typedef ptrToNode List;
typedef ptrToNode Position;
struct Node
{
int Element;
Position Next;
};
void InsertFirst(int x,List L)
{
Position NewNode;
NewNode=malloc(sizeof(struct Node));
if(NewNode==NULL)
{
printf("Out of Space");
}
else 
{
NewNode->Element=x;
NewNode->Next=L->Next;
L->Next=NewNode;
}

}
void display(List S){
while(S!=NULL)
{
printf("%dt",S->Element);
S=S->Next;
}

}
int main()
{
List P;
int ch;
P=(List)malloc(sizeof(struct Node));
InsertFirst(10,P);
InsertFirst(20,P);
InsertFirst(30,P);
display(P);
return 0;
}

有人能告诉我这个代码出了什么问题吗?在链接列表中输入元素后。在显示部分,它从最后一个元素开始,并抛出垃圾值

我得到这个输出

由于您创建了一个虚拟节点,因此应该在display函数中跳过它。循环之前,执行:

S = S->Next;

在主代码中,不应将P->Next保持为未初始化状态,因为这会产生未定义的行为。因此,在为P分配内存后,立即添加:

P->Next = NULL;

顺便说一句,对指向结构的指针进行typedef并不是一种好的做法。

相关内容

  • 没有找到相关文章

最新更新