问题及代码:
list.h
/* *烟台大学计算机与控制工程学院 *作 者:杨宁 *完成日期:2015年9月17日 *问题描述:本文为算法库中的第一个,针对线性表中的顺序存储结构,实现各种基本运算。 算法库包括两个文件: 头文件:list.h,包含定义顺序表数据结构的代码、宏定义、要实现算法的函数的声明; 源文件:list.cpp,包含实现各种算法的函数的定义 采用程序的多文件组织形式,完成相关测试工做。 */ #include<stdio.h> #include<malloc.h> #define Maxsize 50 typedef int ElemType; typedef struct { ElemType data[Maxsize]; int length; }SqList; //自定义函数声明部分 void CreatList(SqList *&L,ElemType a[],int n);//用数组创建线性表 void DispList(SqList *L);//输出线性表DisList(L) bool ListEmpty(SqList *L);//判断是否为空表ListEmpty(L) int ListLength(SqList * L);//判断线性表的长度 bool GetElem(SqList * L,int i,ElemType &e);//求某个数据的值 int LocateElem(SqList * L,ElemType e);//按元素查找数据 void InitList(SqList *&L);//初始化线性表 bool ListInsert(SqList *&L,int i,ElemType e);//插入数据元素 bool ListDelete(SqList *&L,int i,ElemType &e);//删除数据元素 void DestroyList(SqList *&L);//销毁线性表
list.cpp
#include"list.h" void CreatList(SqList *&L,ElemType a[],int n)//用数组创建线性表 { int i; L=(SqList * )malloc(sizeof(SqList)); for(i=0;i<n;i++) L->data[i]=a[i]; L->length=n; } void DispList(SqList *L)//输出线性表DisList(L) { int i; for(i=0;i<L->length;i++) printf("%d ",L->data[i]); printf("\n"); } bool ListEmpty(SqList *L)//判断是否为空表ListEmpty(L) { return(L->length==0); } int ListLength(SqList * L)//判断长度 { return(L->length); } bool GetElem(SqList *L,int i,ElemType &e)//求某个数据的值 { if (i<1 || i>L->length) return false; e=L->data[i-1]; return true; } int LocateElem(SqList *L, ElemType e)//按元素查找数据 { int i=0; while (i<L->length && L->data[i]!=e) i++; if (i>=L->length) return 0; else return i+1; } void InitList(SqList *&L)//初始化线性表 { L=(SqList *)malloc(sizeof(SqList)); L->length=0; } bool ListInsert(SqList *&L,int i,ElemType e)//插入数据元素 { int j; if(i<1||i>L->length+1) return false; i--; for(j=L->length;j>i;j--) L->data[j]=L->data[j-1]; L->data[i]=e; L->length++; return true; } bool ListDelete(SqList *&L,int i,ElemType e)//删除数据元素 { int j; if(i<1||i>L->length-1) return false; i--; e=L->data[i]; for(j=i;j<L->length-1;j++) L->data[j]=L->data[j+1]; L->length--; return true; } void DestroyList(SqList *&L)//销毁数据 { free(L); }
main.cpp(main函数可以多种设计,在此提供一种)
#include "list.h" int main() { SqList *sq; ElemType x[6]= {5,8,7,2,4,9}; CreatList(sq, x, 6); DispList(sq); return 0; }
运行结果:
知识点及总结:
主要概括了线性表的10种算法,并且练习了用多文件组织程序
学习心得;
这10种算法用的更熟练了,多文件组织程序这种方式也越来越习惯了。