第四周项目1建立单链表

来源:互联网 发布:跨域调用js方法 编辑:程序博客网 时间:2024/05/26 07:27
【项目1 - 建立单链表】

  定义单链表存储结构,用头插法和尾插法建立单链表,并显示建立好以后的结果。 

#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;    L=(LinkList*)malloc(sizeof(LinkList));    L->next=NULL;    for(int 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;    L=(LinkList*)malloc(sizeof(LinkList));    r=L;    for(int 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");}


运行结果:

知识点总结:

创建单链表的方法有两种:头插法和尾插法

学习心得:

头插法产生的链表是逆序的