第四周项目1——建立单链表

来源:互联网 发布:百度人口迁徙数据 编辑:程序博客网 时间:2024/06/06 02:21

/*  

*Copyright  (c)2017,烟台大学计算机与控制工程学院      

*All rights reservrd.      

*文件名称 :test.cpp      

*作者:潘亚楠 

*完成时间:2017年9月7日      

*版本号:v1.0      

*问题描述:用头插法和尾插法建立链表

问题及代码:

#include <stdio.h>  #include <malloc.h>  typedef int ElemType;  typedef struct LNode        //定义单链表结点类型  {      ElemType data;      struct LNode *next;     //指向后继结点  } LinkList;    void CreateListF(LinkList *&L,ElemType a[],int n);//头插法建立单链表  void CreateListR(LinkList *&L,ElemType a[],int n);//尾插法建立单链表  void DestroyList(LinkList *&L); //销毁单链表  void DispList(LinkList *L);  //输出单链表    int main()  {      LinkList *L1, *L2;      ElemType a[8]= {7, 9, 8, 2, 0, 4, 6, 3};      CreateListF(L1, a, 8);      printf("头插法建表结果:");      DispList(L1);      CreateListR(L2, a, 6);      printf("尾插法建表结果:");      DispList(L2);      DestroyList(L1);      DestroyList(L2);      return 0;  }  void CreateListF(LinkList *&L,ElemType a[],int n)//头插法建立单链表  {      LinkList *s;      int i;      L=(LinkList *)malloc(sizeof(LinkList));     //创建头结点      L->next=NULL;      for (i=0; i<n; i++)      {          s=(LinkList *)malloc(sizeof(LinkList));//创建新结点          s->data=a[i];          s->next=L->next;            //将*s插在原开始结点之前,头结点之后          L->next=s;      }  }  void CreateListR(LinkList *&L,ElemType a[],int n)//尾插法建立单链表  {      LinkList *s,*r;      int i;      L=(LinkList *)malloc(sizeof(LinkList));     //创建头结点      L->next=NULL;      r=L;                    //r始终指向终端结点,开始时指向头结点      for (i=0; i<n; i++)      {          s=(LinkList *)malloc(sizeof(LinkList));//创建新结点          s->data=a[i];          r->next=s;          //将*s插入*r之后          r=s;      }      r->next=NULL;           //终端结点next域置为NULL  }    void DestroyList(LinkList *&L)  //销毁单链表  {      LinkList *p=L,*q=p->next;      whi
学习心得:学习了有关链表的知识点,对线性表有了更深的理解


原创粉丝点击