第四周1

来源:互联网 发布:奚梦瑶 知乎 编辑:程序博客网 时间:2024/06/07 11:38
  1. /*  
  2. 烟台大学计算机学院  
  3.   
  4. 文件名称:xm.cpp  
  5.   
  6. 作者:姬长水 
  7.   
  8. 完成日期:2017年9月24日  
  9.   
  10. 问题描述:建立单链表(头插法,尾插法) 
  11.   
  12. 输入描述:无 
  13.   
  14. 输出描述:链表的值 
  15.   
  16. */   
  17.   
  18.   
  19. #include <stdio.h>  
  20. #include <malloc.h>  
  21. typedef int ElemType;  
  22.   
  23. typedef struct LNode  
  24. {  
  25.     ElemType data;  
  26.   
  27.     struct LNode *next;  
  28. }Linklist;  
  29. void  CreateListF(Linklist *&L,ElemType a[],int n);//头插法  
  30. void  CreateListR(Linklist *&L,ElemType a[],int n);//尾插法  
  31. void  DestoryList(Linklist *&L);  
  32. void  DispList(Linklist *L);  
  33. int main()  
  34. {  
  35.     Linklist *L1,*L2;  
  36.   
  37.     ElemType a[8]={7,9,8,2,0,4,6,3};  
  38.   
  39.     printf("头插法建表结果:");  
  40.   
  41.     CreateListF(L1,a,8);  
  42.   
  43.     DispList(L1);  
  44.   
  45.     printf("尾插法建表结果:");  
  46.   
  47.     CreateListR(L2,a,8);  
  48.   
  49.     DispList(L2);  
  50.   
  51.     DestoryList(L1);  
  52.   
  53.     DestoryList(L2);  
  54.   
  55.     return 0;  
  56. }  
  57.   
  58. void  CreateListF(Linklist *&L,ElemType a[],int n)  
  59. {  
  60.     Linklist *s;  
  61.   
  62.     L=(Linklist *)malloc(sizeof(Linklist));  
  63.   
  64.     L->next=NULL;  
  65.   
  66.     for(int i=0;i<n;i++)  
  67.     {  
  68.         s=(Linklist *)malloc(sizeof(Linklist));  
  69.         s->data=a[i];  
  70.         s->next=L->next;  
  71.         L->next=s;  
  72.     }  
  73. }  
  74.   
  75. void  CreateListR(Linklist *&L,ElemType a[],int n)  
  76. {  
  77.      Linklist *s,*r;  
  78.   
  79.      L=(Linklist *)malloc(sizeof(Linklist));  
  80.   
  81.      r=L;  
  82.   
  83.      for(int i=0;i<n;i++)  
  84.      {  
  85.          s=(Linklist *)malloc(sizeof(Linklist));  
  86.   
  87.          s->data=a[i];  
  88.   
  89.          r->next=s;  
  90.   
  91.          r=s;  
  92.   
  93.      }  
  94.     r->next=NULL;  
  95. }  
  96.   
  97. void  DestoryList(Linklist *&L)  
  98. {  
  99.     Linklist *pre=L,*p=L->next;  
  100.   
  101.     while(p!=NULL)  
  102.     {  
  103.         free(pre);  
  104.   
  105.         pre=p;  
  106.   
  107.         p=pre->next;  
  108.     }  
  109.     free(pre);  
  110. }  
  111.   
  112. void DispList(Linklist *L)  
  113. {  
  114.     Linklist*p=L->next;  
  115.   
  116.     while(p!=NULL)  
  117.     {  
  118.         printf("%d ",p->data);  
  119.   
  120.         p=p->next;  
  121.   
  122.     }  
  123.   
  124.     printf("\n");  
  125. }  
原创粉丝点击