Chinaunix

标题: 链表添结点问题 [打印本页]

作者: 一页空纸    时间: 2011-08-24 13:50
标题: 链表添结点问题
本帖最后由 一页空纸 于 2011-08-24 13:58 编辑
  1. typedef struct node
  2. {int data;
  3. struct node *next;
  4. }ListNode,*Linklist;

  5. void  Add_Node(Linklist L,int data)  //插尾法
  6. {Linklist p,q;
  7. p=(Linklist)malloc(sizeof(ListNode));
  8. p->data=data;
  9. p->next=NULL;
  10. if(L==NULL)
  11. L=p;


  12. else


  13. { q=L;
  14. while(q->next!=NULL)
  15. q=q->next;
  16. q->next=p;}



  17. }


  18. int main(void)


  19. {Linklist head=NULL;
  20. Add_Node(head,data);


  21. }
复制代码
这么写怎么样结点添不上去呢
作者: bhuanghw    时间: 2011-08-24 16:23
在你的main里,传入的参数head=NULL,你要添加结点就意味着要修改指针head的值, 修改指针的值(也就是指针的指向)需要传入指针的指针。记住 C语言函数的形参都是使用实参的拷贝, 你这样做, 最后head 还是NULL

两种方法:
1. 加个表头,申请一个表头的内存传进去
2. 将head 随便初始化一个值,然后将&head传进去就行了

当然两个方法都要修改Add_Node函数的参数形式。

慢慢理解吧




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2