C语言:链表

来源:互联网 发布:液压系统计算软件 编辑:程序博客网 时间:2024/05/01 08:35

         链表搞了好久,今晚终于有了眉目,之前做的都是用c++来做,c++中是用类来做的,现在c没有了类,就用结构体来做,看了好久都看不懂,主要是转不过弯来。现在感觉也差不多的。分配空间(好像C++中自动分配),然后数据录入,然后判断是否是头结点,如果是的话就把这个头结点传给head,然后继续循环,当不是头结点的时候,就把数据放到结点的指针域里面(q->next),然后把指针替换。我的理解就是这些。上代码:

Code:
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3.   
  4. #define NULL 0  
  5. //#define LEN sizeof(struct stu)  
  6. //定义结点结构类型  
  7. struct stu   
  8. {  
  9.     int num,age;  
  10.     stu *next;  
  11. };  
  12.   
  13. void main()  
  14. {  
  15.     stu *head = NULL;    //定义头指针并赋值为0  
  16.     struct stu *creat(int n);  //声明创建链表函数  
  17.     void print(stu *q);     //声明输出函数  
  18.     head = creat(3);  
  19.     print(head);  
  20.       
  21. }  
  22.   
  23. stu *creat(int n)  
  24. {  
  25.     stu *h,*p,*q;  
  26.     int i;  
  27.     h = NULL;  
  28.     for (i=0;i<n;i++)  
  29.     {  
  30.         p=(stu*)malloc(sizeof(stu));  //分配一个结点的空间给p  
  31.         scanf("%d%d",&p->num,&p->age);  //输入一个新的结点  
  32.         if(h == NULL)  
  33.             h = p;  
  34.         else  
  35.             q->next = p;  //新的链表添加到链表的尾部  
  36.         q = p;  
  37.           
  38.     }  
  39.     q->next = NULL;     //最后节点的指针域变为0  
  40.     return h;    
  41. }  
  42.   
  43.   
  44. void print(stu *q)  
  45. {  
  46.     while(q)  
  47.     {  
  48.         printf("/nnum:%d /nage:%d",q->num,q->age);  
  49.         q = q->next;  
  50.           
  51.     }  
  52. }  

 

原创粉丝点击