【第四周项目2】建设“单链表”算法库

来源:互联网 发布:有什么好看的网络电影 编辑:程序博客网 时间:2024/06/08 18:53
/*Copyright (c)2017,烟台大学计算机与控制工程学院        All rights reserved.        文件名称:9.cpp      作    者:尚文哲       完成日期:2017年9月26日              问题描述:按照“0207将算法变程序”部分建议的方法,建设自己的专业基础设施算法库。            这一周,建的是单链表的算法库。 算法库包括两个文件:            1.头文件:linklist.h,包含定义顺序表数据结构的代码、宏定义、要实现算法的函数的声明;           2.源文件:linklist.cpp,包含实现各种算法的函数的定义。           请采用程序的多文件组织形式,建立如上的两个文件,另外再建立一个源文件(如main.cpp),            编制main函数,完成相关的测试工作。            测试工作可以采用“渐进”的思路,每次涉及的函数应该尽可能少。   输入描述:若干数据 。      程序输出:插入的节点数据。   */
(1)头文件LinkLIst.h  #include<stdio.h>    #include<malloc.h>    typedef int ElemType;    typedef struct node    {     int data;     node *next;        }linklist;    void InitList( linklist *& );    void ListInsert(linklist *,int ,int );    void DispList(linklist *);    void DestroyList(linklist*);    void CreateListF(linklist *&,ElemType a[],int );    void CreateListF(linklist *&,ElemType a[],int );     (2)源文件linklist.cpp  #include"LinkList.h"    void InitList(linklist *&l)    {            l = (linklist*)malloc(sizeof(linklist));            l->next = NULL;    }    void ListInsert(linklist *l, int i, int e)    {            linklist *p, *q;            int n = 0;            i--;            p = (linklist*)malloc(sizeof(linklist));            q = l;                while (l->next != NULL && n < i)            {                    n++;                    q = q->next;                }            if (l->next != NULL)            {                        p->data = e;                    p->next = q->next;                    q->next = p;                }            if (l->next == NULL)            {                    p->data = e;                    p->next = l->next;                    l->next = p;            }                    }    void DispList(linklist *L)    {            linklist *p = L->next;            while (p != NULL)            {                    printf("%d ", p->data);                    p = p->next;            }            printf("\n");    }        void DestroyList(linklist* l)    {            linklist *q, *p;            int i = 0;            q = l;            p = l;            q = q->next;            while (q->next != NULL)            {                    free(p);                    p = q;                    q = q->next;            }            free(q);    }    void CreateListF(linklist *&L, ElemType a[], int n)    {            linklist *p;            int i = 0;            L = (linklist *)malloc(sizeof(linklist));            L->next = NULL;            while (i < n)            {                    p = (linklist *)malloc(sizeof(linklist));                    p->data = a[i];                    p->next = L->next;                    L->next = p;                    i++;            }    }            void CreateListR(linklist *&L, ElemType a[], int n)    {            linklist *p, *q;            int i = 0;                L = (linklist *)malloc(sizeof(linklist));            L->next = NULL;            q = L;            while (i < n)            {                    p = (linklist *)malloc(sizeof(linklist));                    p->data = a[i];                    p->next = q->next;                    q->next = p;                    q = p;                    i++;            }        }        (3)main函数main.cpp    #include"LinkList.h"    int main()    {            linklist *L;            InitList(L);            ListInsert(L, 1, 15);            ListInsert(L, 1, 10);            ListInsert(L, 1, 5);            ListInsert(L, 1, 20);            DispList(L);            DestroyList(L);            return 0;    }    


 
原创粉丝点击