第四周项目一

来源:互联网 发布:js match对象 编辑:程序博客网 时间:2024/06/06 02:54
  1. #include <stdio.h>  
  2. #include <malloc.h>  
  3. typedef int ElemType;  
  4. typedef struct LNode        //定义单链表结点类型  
  5. {  
  6.     ElemType data;  
  7.     struct LNode *next;     //指向后继结点  
  8. } LinkList;  
  9.   
  10. void CreateListF(LinkList *&L,ElemType a[],int n);//头插法建立单链表  
  11. void CreateListR(LinkList *&L,ElemType a[],int n);//尾插法建立单链表  
  12. void DestroyList(LinkList *&L); //销毁单链表  
  13. void DispList(LinkList *L) ; //输出单链表  
  14.   
  15. int main()  
  16. {  
  17.     LinkList *L1, *L2;  
  18.     ElemType a[8]= {7, 9, 8, 2, 0, 4, 6, 3};  
  19.     CreateListF(L1, a, 8);  
  20.     printf("头插法建表结果:");  
  21.     DispList(L1);  
  22.     CreateListR(L2, a, 6);  
  23.     printf("尾插法建表结果:");  
  24.     DispList(L2);  
  25.     DestroyList(L1);  
  26.     DestroyList(L2);  
  27.     return 0;  
  28. }  
  29.   
  30. void CreateListF(LinkList *&L,ElemType a[],int n)//头插法建立单链表  
  31. {  
  32.     LinkList *s;  
  33.     int i;  
  34.     L=(LinkList *)malloc(sizeof(LinkList));     //创建头结点  
  35.     L->next=NULL;  
  36.     for (i=0; i<n; i++)  
  37.     {  
  38.         s=(LinkList *)malloc(sizeof(LinkList));//创建新结点  
  39.         s->data=a[i];  
  40.         s->next=L->next;            //将*s插在原开始结点之前,头结点之后  
  41.         L->next=s;  
  42.     }  
  43. }  
  44. void CreateListR(LinkList *&L,ElemType a[],int n)//尾插法建立单链表  
  45. {  
  46.     LinkList *s,*r;  
  47.     int i;  
  48.     L=(LinkList *)malloc(sizeof(LinkList));     //创建头结点  
  49.     L->next=NULL;  
  50.     r=L;                    //r始终指向终端结点,开始时指向头结点  
  51.     for (i=0; i<n; i++)  
  52.     {  
  53.         s=(LinkList *)malloc(sizeof(LinkList));//创建新结点  
  54.         s->data=a[i];  
  55.         r->next=s;          //将*s插入*r之后  
  56.         r=s;  
  57.     }  
  58.     r->next=NULL;           //终端结点next域置为NULL  
  59. }  
  60.   
  61. void DestroyList(LinkList *&L)  //销毁单链表  
  62. {  
  63.     LinkList *p=L,*q=p->next;  
  64.     while (q!=NULL)  
  65.     {  
  66.         free(p);  
  67.         p=q;  
  68.         q=p->next;  
  69.     }  
  70.     free(p);    //此时q为NULL,p指向尾结点,释放它  
  71. }  
  72.   
  73. void DispList(LinkList *L)  //输出单链表  
  74. {  
  75.     LinkList *p=L->next;  
  76.     while (p!=NULL)  
  77.     {  
  78.         printf("%d ",p->data);  
  79.         p=p->next;  
  80.     }  
  81.     printf("\n");  
  82. }
  83.  
  84. 学习心得:学会了用头插法尾插法建立点链表。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 二个多月的宝宝拉肚子怎么办 宝宝肚子着凉吐怎么办 孩子胃着凉呕吐怎么办 一岁受凉呕吐怎么办 孩子着凉了呕吐怎么办 小孩受凉呕吐腹泻怎么办 宝宝胃受寒呕吐怎么办 一岁半宝宝受寒呕吐怎么办 治小儿反复发烧怎么办 海洋宝宝吃下去怎么办 两岁儿童拉肚子怎么办 14天宝宝拉肚子怎么办 小孩不消化引起发烧怎么办 宝宝胃胀呕吐怎么办 小儿胃胀不消化怎么办 4岁小儿腹胀怎么办 两岁半的宝宝吐怎么办 月子宝宝闹人怎么办 宝宝一周岁拉肚子怎么办 一岁幼儿呕吐怎么办 孩子受凉呕吐拉肚子怎么办 5岁儿童呕吐怎么办 小孩发烧老是吐怎么办 宝宝吃雪糕呕吐怎么办 小孩感冒发烧吐怎么办 宝宝呕吐加发热怎么办 七个月宝拉肚子怎么办 新生儿17天拉稀怎么办 七个半月宝宝拉肚子怎么办 七个月婴儿拉稀怎么办 宝宝不停的拉稀怎么办 猫咪受凉了呕吐怎么办 孩子生理性腹泻怎么办 婴儿肚子受凉了怎么办 小孩说话有点口吃怎么办 3岁宝宝先拉后吐怎么办 1岁宝宝拉肚子怎么办 2岁宝宝结巴怎么办 小孩吐和拉肚子怎么办 头外伤后头晕怎么办 紧张性神经头痛怎么办