建设顺序表算法库
2015-10-05 16:31
225 查看
问题及代码:
运行结果:
学习心得:
/* * 烟台大学计算机与控制工程学院 *文件名称:main.cpp *作 者:刘磊 *完成日期:2015年10月5日 *版 本 号:v1.0 * *问题描述:测试“建立线性表”的算法CreateList, 实现“输出线性表”的算法DispList。 实现判断线性表是否为空的算法ListEmpty 增加求线性表的长度ListLength的函数并测试; 增加求线性表L中指定位置的某个数据元素GetElem的函数并测试; 增加查找元素LocateElem的函数并测试; 插入数据元素ListInsert; 删除数据元素ListDelete; 初始化线性表InitList; 销毁线性表DestroyList ; 采用多文件的形式。 * *输入描述:输入你要查找的元素和你要查找的位置 *程序输出:给出所查找的数据元素的位置,以及给出的位置的元素 */ #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); //插入数据元素ListInsert bool ListDelete(SqList *L,int i); //删除数据元素ListInsert void DestroyList(SqList *&L); //销毁线性表DestroyList
#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); }
#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; else cout<<"位置为"<<s2<<"的元素不存在"<<endl; cout<<"请输入你要查找的元素:"; //测试查找元素 cin>>s1; if((loc=LocateElem(sq, s1))>0) cout<<"值为"<<s1<<"的元素是第"<<loc<<"个元素"<<endl; else cout<<"没有值为"<<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; }
运行结果:
学习心得:
相关文章推荐
- find命令之exec
- 共模干扰&差模干扰
- js日期格式化函数
- 一对一关联模型,HAS_ONE
- 利用nexus5伪造一张门禁卡
- 第4周实践项目3 -- 单链表应用(3)
- 第三周项目1 顺序表的基本运算
- 第四周 项目2-建设“单链表”算法库
- 【codevs2455】繁忙的都市
- POJ2516 Minimum Cost(最小费用最大流)
- 计算器编辑
- Linux编程中制作&打补丁:diff & patch
- 第三周 线性表(-)--顺序表 项目四--顺序表的应用 问题一
- 第三周项目4 顺序表应用(1)
- 第四周项目3-单链表应用(2)连接
- 软件项目研发的设计流程
- 第四周 建立单链表
- 回文树 (tsinsen A1280. 最长双回文串)
- Win7 安装VS2010, .net framework 4.0 失败,错误HRESULT 0xc8000222解决办法
- 一对多关联模型,BELONGS_TO