博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构 顺序表 操作集
阅读量:3904 次
发布时间:2019-05-23

本文共 2329 字,大约阅读时间需要 7 分钟。

此顺序表是以数组下标为1开始放入元素的。。。

#include 
#include
#include
#include
#include
#include
using namespace std;typedef int ElemType;#define LIST_INIT_SIZE 5 //线性表储存空间的初始分配量#define LISTINCREMENT 1 //线性表存储空间的分配增量struct SqList{ ElemType *elem; int length; int listsize;};void init(SqList &L) //初始化{ L.elem=NULL;}bool Is_Exist(SqList &L) //顺序表是否存在{ if(L.elem==NULL) return false; else return true;}bool Create (SqList &L) //创建一个顺序表{ L.elem=(ElemType*)malloc(sizeof(ElemType)*LIST_INIT_SIZE); if(L.elem==NULL) { printf("动态内存分配失败\n"); return false; } L.length=0; L.listsize=LIST_INIT_SIZE; return true;}void ClearList(SqList &L) //清空顺序表{ if(!Is_Exist(L)) { printf("顺序表不存在,程序终止\n"); exit(OVERFLOW); } L.length=0;}void DestroyList (SqList &L) //销毁顺序表{ if(!Is_Exist(L)) { printf("顺序表不存在,程序终止\n"); exit(OVERFLOW); } free(L.elem); L.length=0;}bool ListEmpty(SqList &L) //判断顺序表是否为空{ if(!Is_Exist(L)) { printf("顺序表不存在,程序终止\n"); exit(OVERFLOW); } if(L.length==0) return true; else return false;}int ListLength(SqList &L) //顺序表的长度{ if(!Is_Exist(L)) { printf("顺序表不存在,程序终止\n"); exit(OVERFLOW); } return L.length;}bool GetElem (SqList &L,int loc,ElemType &e) //顺序表中某个位置元素的值{ if(!Is_Exist(L)) { printf("顺序表不存在,程序终止\n"); exit(OVERFLOW); } if(L.length
<=0) { printf("查找超出顺序表范围\n"); return false; } e=L.elem[loc]; return true;}void ListTraverse (SqList &L) //顺序表遍历{ if(!Is_Exist(L)) { printf("顺序表不存在,程序终止\n"); exit(OVERFLOW); } for (int i=1;i<=L.length;i++) printf("%d%c",L.elem[i],i==L.length?'\n':' ');}bool ListInsert (SqList &L,int loc,ElemType data) //插入元素{ if(!Is_Exist(L)) { printf("顺序表不存在,程序终止\n"); exit(OVERFLOW); } if(loc>L.length+1||loc<=0) { printf("插入位置超出顺序表范围\n"); return false; } if(L.length+1>=L.listsize) { ElemType* newbase; newbase=(ElemType*)realloc(L.elem,sizeof(ElemType)*(L.listsize+LISTINCREMENT)); if(newbase==NULL) { printf("追加内存失败\n"); exit(OVERFLOW); } L.elem=newbase; L.listsize+=LISTINCREMENT; } for (int i=L.length+1;i>=loc;i--) L.elem[i]=L.elem[i-1]; L.elem[loc]=data; L.length++; return true;}bool ListDelete(SqList &L,int loc,int &e) //删除指定位置元素{ if(!Is_Exist(L)) { printf("顺序表不存在,程序终止\n"); exit(OVERFLOW); } if(ListEmpty(L)) { printf("顺序表为空,不可删除元素\n"); return false; } if(loc>L.length||loc<=0) { printf("删除位置超出顺序表范围\n"); return false; } e=L.elem[loc]; for (int i=loc;i

 

转载地址:http://yxaen.baihongyu.com/

你可能感兴趣的文章
POJ 1724 ROADS【DFS+剪枝】
查看>>
AOJ 847 整数拆段
查看>>
AOJ 848 分数拆分
查看>>
UVA 133 The Dole Queue 【约瑟夫环】
查看>>
XDOJ 1208 B.笑爷买房 【DFS】
查看>>
部门年度工作总结的内容
查看>>
pandas学习笔记
查看>>
Numpy笔记
查看>>
正则表达式
查看>>
python线程进程笔记
查看>>
TensorFlow初学者必须了解的55个经典案例
查看>>
机器学习笔记
查看>>
数十种TensorFlow实现案例汇集:代码+笔记
查看>>
python记录的错误与知识
查看>>
内核中各种套接字的关系
查看>>
linux sysctl 参数实现 暨 ip_forward参数对Linux内核转发影响分析
查看>>
linux 路由表 的一些相关资料
查看>>
Linux 路由 学习笔记 之三 路由查找流程分析
查看>>
LINUX IP 路由实现
查看>>
快速重传与快速恢复算法
查看>>