问题及代码:
shunxu.cpp
/* *烟台大学计算机控制与工程学院 *文件名称:shunxu.cpp shunxu2.cpp head.cpp main.cpp *作 者:杨宁 *完成日期:2015年9月14日 *问题描述:线性表的基本算法,包括线性表的创建,输出,判断是否为空表; 增加线性表的长度,求出线性表中的指定位置,增加查找元素 *输入描述:无 *程序输出:输出线性表,线性表的长度,查找数在线性表中的指定位置,以及根据指定位置找数。 */ #include"head.h" void CreateList(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)//对顺序表的输出 { int i; for(i=0;i<L->length;i++) printf("%d ",L->data[i]); printf("\n"); } bool ListEmpty(SqList * &L)//判断顺序表是否为空表 { return (L->length==0); }
shunxu2.cpp
#include"head.h" 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; }
main.cpp
#include"head.h" int main() { SqList *sq; ElemType x[6]= {5,8,7,2,4,9}; ElemType a; int loc; CreateList(sq, x, 6); DispList(sq); printf("表长度:%d\n", ListLength(sq)); //测试求长度 if(GetElem(sq, 3, a)) //测试在范围内的情形 printf("找到了第3个元素值为:%d\n", a); else printf("第3个元素超出范围!\n"); if(GetElem(sq, 15, a)) //测试不在范围内的情形 printf("找到了第15个元素值为:%d\n", a); else printf("第15个元素超出范围!\n"); if((loc=LocateElem(sq, 8))>0) //测试能找到的情形 printf("找到了,值为8的元素是第 %d 个\n", loc); else printf("值为8的元素木有找到!\n"); if((loc=LocateElem(sq, 17))>0) //测试不能找到的情形 printf("找到了,值为17的元素是第 %d 个\n", loc); else printf("值为17的元素木有找到!\n"); return 0; }
head.cpp
#include<stdio.h> #include<malloc.h> #define MaxSize 50//Maxsize将用于后面定义存储空间的大小 typedef int ElemType;//ElemType在不同场合可以根据问题的需要确定,在此取简单的int typedef struct { ElemType data[MaxSize]; //利用了前面MaxSize和ElemType的定义 int length; } SqList; void CreateList(SqList * &L,ElemType a[],int n);//对顺序表的创建 void DispList(SqList * L);//对顺序表的输出 bool ListEmpty(SqList * &L);//判断顺序表是否为空表 int ListLength(SqList * L);//判断线性表的长度 bool GetElem(SqList * L,int i,ElemType &e);//求某个数据的值 int LocateElem(SqList * L,ElemType e);//按元素查找数据
运行结果:
知识点及总结:
线性表的线性表的创建,输出,判断是否为空表; 增加线性表的长度,求出线性表中的指定位置,增加查找元素;另外用到了多文件管理程序。
学习心得:
对线性表的基础知识一定掌握,为以后做铺垫。