第四周-单链表的的建立

来源:互联网 发布:软件测试员工资怎么样 编辑:程序博客网 时间:2024/06/02 03:13
  1. /*  
  2. *Copyright(c) 2017,YTU CS  
  3. *All right reserved.  
  4. *作    者:常路.  
  5. *完成日期:2017,9,21  
  6. *版 本 号: v1.0  
  7.  
  8. *问题描述: 定义单链表存储结构,用头插法和尾插法建立单链表,并显示建立好以后的结果。  
  9. *输    入: 无 
  10. *输    出: 两个不同方式建立的链表。 
  11. */  
  12. #include<iostream>
    using namespace std;
    #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);
        cout<<"头插法建表结果 :";
        DispList(L1);
        CreateListR(L2, a, 6);
        cout<<"尾插法建表结果:";
        DispList(L2);
        DestroyList(L1);
        DestroyList(L2);
        return 0;
    }
    void CreateListF(LinkList *&L,ElemType a[],int n)//头插法建立单链表
    {
        LinkList *r;
        int i;
        L=(LinkList *)malloc(sizeof(LinkList));
        L->next=NULL;
        for(i=0;i<n;i++)
        {
            r=(LinkList *)malloc(sizeof(LinkList));
            r->data=a[i];
            r->next=L->next;
            L->next=r;
        }


    }
    void CreateListR(LinkList *&L,ElemType a[],int n)//尾插法建立单链表
    {
        ElemType e;
        LinkList *r,*s;
        int i;
        L=(LinkList *)malloc(sizeof(LinkList));
        L->next=NULL;
        s=L;
        for(i=0;i<n;i++)
        {
            r=(LinkList *)malloc(sizeof(LinkList));
            r->data=a[i];
            s->next=r;
            s=r;
        }
        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 *r=L->next;
       while(r!=NULL)
       {
           cout<<r->data<<" ";
           r=r->next;
       }
       cout<<endl;
    }




  13. 运行结果:  
  14.  
原创粉丝点击