我最近一直在学习Linked List&我试图在链接列表的开头添加一个节点。但是在输出中最后会有一个额外的'0'。有人可以解释原因&建议我应该做些什么改变?
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
struct node{
int num;
struct node *link;
};
void push(struct node **head,int val){
struct node *ptr=(struct node *)malloc(sizeof(struct node));
ptr->num=val;
ptr->link=*head;
*head=ptr;
}
void trav(struct node *ptr){
while(ptr!=NULL){
cout<<ptr->num<<endl;
ptr=ptr->link;
}
}
void main(){
clrscr();
int val;
struct node *head=(struct node*)malloc(sizeof(struct node));
for(int i=0;i<5;i++){
cout<<"enter a value:";
cin>>val;
push(&head,val);
}
trav(head);
getch();
}
输出看起来像这样 3 4 12 6 7 0
答案 0 :(得分:0)
在主要功能中
struct node *head=(struct node*)malloc(sizeof(struct node));
现在什么是head->num
?它为零(由编译器给出)。
因此,实际上,在进入循环之前,您正在创建一个空节点。因此,它总是印在最后。