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

来源:互联网 发布:怎么用记事本编程 编辑:程序博客网 时间:2024/06/15 01:41
问题描述及代码:[cpp] view plain copy1./*      2.*烟台大学计控学院       3.*作    者:朱建豪      4.*完成日期:2016年9月22日   5.*问题描述:定义单链表存储结构,用头插法和尾插法建立单链表,并显示建立好以后的结果。*/  (1)list.h中的代码[cpp] view plain copy1.#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);//输出单链表  (2)定义函数的代码[cpp] view plain copy1.#include"list.h"  2.void CreateListF(LinkList *&L,ElemType a[],int n)//头插法建立单链表  3.{  4.    LinkList *s;  5.    int i;  6.    L=(LinkList *)malloc(sizeof(LinkList));  7.    L->next=NULL;//创建头结点,其next域为NULL  8.    for(i=0;i<n;i++)  9.    {  10.        s=(LinkList *)malloc(sizeof(LinkList));  11.        s->data=a[i];//创建数据节点*s  12.        s->next=L->next;  13.        L->next=s;  14.    }  15.}  16.void CreateListR(LinkList *&L,ElemType a[],int n)//尾插法建立单链表  17.{  18.        LinkList *s,*r;  19.        int i;  20.        L=(LinkList *)malloc(sizeof(LinkList));  21.        r=L;  22.        for(i=0;i<n;i++)  23.        {  24.            s=(LinkList *)malloc(sizeof(LinkList));  25.            s->data=a[i];//创建数据节点*s  26.            r->next=s;//将*s插在*r之后  27.            r=s;  28.        }  29.        r->next=NULL;  30.}  31.  32.  33.  34.void DestroyList(LinkList *&L) //销毁单链表  35.{  36.    LinkList *pre=L,*p=L->next;  37.    while(p!=NULL)  38.    {  39.        free(pre);  40.        pre=p;  41.        p=pre->next;  42.    }  43.    free(pre);  44.}  45.  46.void DispList(LinkList *L)  //输出单链表  47.{  48.    LinkList *p=L->next;//p开始指向节点  49.    while(p!=NULL)  50.    {  51.        printf("%d",p->data);  52.        p=p->next;  53.    }  54.    printf("\n");  55.}  (3)main函数的代码[cpp] view plain copy1.#include"list.h"  2.int main()  3.{  4.    LinkList *L1, *L2;  5.    ElemType a[8]= {7, 9, 8, 2, 0, 4, 6, 3};  6.    CreateListF(L1, a, 8);  7.    printf("头插法建表结果:");  8.    DispList(L1);  9.    CreateListR(L2, a, 6);  10.    printf("尾插法建表结果:");  11.    DispList(L2);  12.    DestroyList(L1);  13.    DestroyList(L2);  14.    return 0;  15.}  运行结果:<img src="http://img.blog.csdn.net/20160922102546829?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />知识点总结:利用头插法和尾插法来建立单链表,销毁内存空间,然后输出创建好的单链表学习心得:头插法和尾插法各有各的好处,但自己还是不会编写。。。。。在练习中慢慢来吧。。不过算法的过程还是理解的

0 0
原创粉丝点击