周三--项目2 【建设“顺序表” 算法库】
来源:互联网 发布:上海首届网络文化节 编辑:程序博客网 时间:2024/05/29 18:33
/* * 烟台大学计算机与控制工程学院 *文件名称:main.cpp *作 者: 李潇 *完成日期:2016年9月11日 *版 本 号:v1.0 * *问题描述:测试“建立线性表”的算法CreateList, 实现“输出线性表”的算法DispList。 实现判断线性表是否为空的算法ListEmpty 增加求线性表的长度ListLength的函数并测试; 增加求线性表L中指定位置的某个数据元素GetElem的函数并测试; 增加查找元素LocateElem的函数并测试; 插入数据元素ListInsert;删除数据元素ListDelete;初始化线性表InitList;销毁线性表DestroyList ; 采用多文件的形式。 * *输入描述:输入你要查找的元素和你要查找的位置 *程序输出:给出所查找的数据元素的位置,以及给出的位置的元素*/ 代码如下:list.h:#include <iostream>using namespace std;#include <malloc.h>#define MaxSize 50 typedef int ElemType; typedef struct{ ElemType data[MaxSize]; int length;} SqList;void CreateList(SqList *&L, ElemType a[], int n); //创建线性表void DispList(SqList *L); //输出线性表DispList(L)bool ListEmpty(SqList *L); //判定是否为空表ListEmpty(L)int ListLength(SqList *L); //求线性表的长度ListLength(L)bool GetElem(SqList *L,int i,ElemType &e); //求某个数据元素值GetElem(L,i,e)int LocateElem(SqList *L, ElemType e); //按元素值查找LocateElem(L,e)bool ListInsert(SqList *L,int i,ElemType e); //插入数据元素ListInsertbool ListDelete(SqList *L,int i); //删除数据元素ListInsertvoid DestroyList(SqList *&L); //销毁线性表DestroyListlist.cpp#include"list.h"int main(){ SqList *sq; ElemType x[6]= {5,8,7,2,4,6}; ElemType a; int s1,s2,s3,s4,s5;int loc; CreateList(sq, x, 6); DispList(sq); printf("表长度:%d\n", ListLength(sq)); //测试求长度 cout<<"请输入你要查找的元素的位置:"; //测试查找元素的位置cin>>s2; if(GetElem(sq, s2, a)) cout<<"位置为"<<s2<<"的元素为:"<<a<<endl; elsecout<<"位置为"<<s2<<"的元素不存在"<<endl;cout<<"请输入你要查找的元素:"; //测试查找元素 cin>>s1; if((loc=LocateElem(sq, s1))>0) cout<<"值为"<<s1<<"的元素是第"<<loc<<"个元素"<<endl; elsecout<<"没有值为"<<s1<<"的元素"<<endl;cout<<"请输入你要插入的元素和你要插入的位置(位置小于等于6):";cin>>s3>>s4;ListInsert(sq,s4,s3);DispList(sq); cout<<"请输入你要删除的元素的位置(位置小于等于6):";cin>>s5; ListDelete(sq,s5); DispList(sq);DestroyList(sq); return 0;}main.cpp:#include"list.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) //输出线性表DispList(L){ int i;if (ListEmpty(L)) return; 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) //求线性表的长度ListLength(L){ return(L->length);}bool GetElem(SqList *L,int i,ElemType &e) //求某个数据元素值GetElem(L,i,e){ if (i<1 || i>L->length) return false; e=L->data[i-1]; return true;}int LocateElem(SqList *L, ElemType e) //按元素值查找LocateElem(L,e){ int i=0; while (i<L->length && L->data[i]!=e) i++; if (i>=L->length) return 0; else return i+1;}bool ListInsert(SqList *L,int i,ElemType e) //插入数据元素ListInsert{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) //删除数据元素ListDelete{int j;if(i<1||i>L->length+1)return false;i--; //将逻辑序号转化为物理序号for(j=i;j<L->length;j++)L->data[j]=L->data[j+1];L->length--;return true;}void DestroyList(SqList *&L)//销毁顺序表{ free(L);}运行结果:<img src="http://img.blog.csdn.net/20160911132300425" width="669" height="269" alt="" />
知识点总结:顺序表的所有基本运算
心得体会:虽然都懂了 但还是不太熟 有待于加强
0 0
- 周三--项目2 【建设“顺序表” 算法库】
- 周三项目2--建设“顺序表”算法库
- 项目2 - 建设“顺序表”算法库
- 项目2 - 建设“顺序表”算法库
- 2015-9-14 项目2 - 建设“顺序表”算法库
- 第3周 项目2 - 建设“顺序表”算法库
- 第3周项目2 建设“顺序表”算法库
- 【第3周 项目2 - 建设“顺序表”算法库】
- 第三周—项目2 建设“顺序表”算法库
- 第三周项目2建设顺序表算法库
- 第3周项目2-建设“顺序表”算法库
- 第三周项目2-建设“顺序表”算法库
- 第三周-项目2-建设“顺序表算法库”
- (第三周项目2)建设“顺序表”算法库
- 第三周项目2—建设“顺序表”算法库
- 第3周项目2--建设“顺序表”算法库
- 第3周项目2 建设“顺序表”算法库
- 第三周 项目2-建设顺序表算法库
- json数据的封装与解析
- java OutOfMemoryError
- 7.13 KUVA 401Palindromes
- 用python开发了一个简单apache web服务端范例,在win10 + apache2.4.9 + python3.5 测试成功
- spark sql读取mysql数据源并且将结果写入mysql
- 周三--项目2 【建设“顺序表” 算法库】
- hdoj1003-Max Sum(数组的最大和)
- CentOS6.5安装apr优化tomcat7性能
- 洛谷 P1144 最短路计数
- 你不知道的JavaScript笔记之关于this
- Qt之QUrlQuery
- 堆排序
- 数组名与数组指针
- python中常见的字符串处理函数