为什么0会出现在链表的末尾?

时间:2015-02-27 19:28:15

标签: c++ linked-list

我最近一直在学习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

1 个答案:

答案 0 :(得分:0)

在主要功能中

  struct node *head=(struct node*)malloc(sizeof(struct node));

现在什么是head->num?它为零(由编译器给出)。

因此,实际上,在进入循环之前,您正在创建一个空节点。因此,它总是印在最后。