第四周 项目1 建立单链表

来源:互联网 发布:maya编程语言 编辑:程序博客网 时间:2024/06/06 17:08
/*   *Copyright (c)2015, 烟台大学计算机与控制工程学院   *All rights reserved.   *文件名称:Apply.cpp   *作    者:苏凯祺   *完成日期:2014年10月21号   *版 本 号: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;    L->next=s;}}void CreateListR(LinkList *&L,ElemType a[],int n)//尾插法建立单链表{LinkList *s,*r;int i;L=(LinkList *)malloc(sizeof(LinkList));r=L;L->next=NULL;for(i=0;i<n;i++){    s=(LinkList *)malloc(sizeof(LinkList));    s->data=a[i];    r->next=s;    r=s;}r->next=NULL;}void DestroyList(LinkList *&L)//销毁单链表{    LinkList *pre=L,*p=L->next;    while(p!=NULL)    {        free(pre);        pre=p;        p=pre->next;    }    free(pre);}void DispList(LinkList *L) //输出单链表{LinkList*p=L->next;while(p!=NULL){    printf("%d",p->data);    p=p->next;}printf("\n");}

运行结果:


知识点总结:

头插法和尾插法,需要注意是插在哪,插完之后是什么样的,再一次的时候就要开始循环了。释放单链表要逐一释放,逐一输出。

学习心得:

还是要画图去理解,毕竟有点抽象。

1 0