第4周实践项目2--建设“单链表”算法库

来源:互联网 发布:上海知贤装饰 编辑:程序博客网 时间:2024/05/17 02:37
 /*           Copyright (c)2016,烟台大学计算机与控制工程学院           All rights reserved.           文件名称:项目2--建设“单链表”算法库.cpp           作    者:王曼          完成日期:2016年9月23日           版 本 号:v1.0           问题描述:按照“0207将算法变程序”部分建议的方法,建设自己的专业基础设施算法库。               这一周,建的是单链表的算法库。 算法库包括两个文件:               1.头文件:linklist.h,包含定义顺序表数据结构的代码、宏定义、要实现算法的函数的声明;              2.源文件:linklist.cpp,包含实现各种算法的函数的定义。              请采用程序的多文件组织形式,建立如上的两个文件,另外再建立一个源文件(如main.cpp),               编制main函数,完成相关的测试工作。               测试工作可以采用“渐进”的思路,每次涉及的函数应该尽可能少。      输入描述:若干数据 。         程序输出:插入的节点数据。      */  

头文件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 )


源文件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++;              }      }  

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;      }  


运行结果



知识点总结

 用文件建立算法库

 

学习心得

以前基础没打好,现在有点乱,经过前面的练习感觉好了些。

0 0
原创粉丝点击