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并不是一种好的做法。