顺序表的建立,实现及操作
来源:互联网 发布:趣丸网络科技 知乎 编辑:程序博客网 时间:2024/04/30 16:07
#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<cmath>#define MAX 1000+5using namespace std;typedef struct{ int data[MAX]; int length;}SqList;//定义线性表void Initlist(SqList *&L)//初始化线性表{ L=(SqList*)malloc(sizeof(SqList));//分配空间 L->length=0;//长度为零}void DestroyList(SqList*&L)//销毁线性表{ free(L);}bool ListEmpty(SqList*&L)//判断表是否为空{ return (L->length==0);//若等于零,返回TRUE,证明为空,否则相反;}int Listlength(SqList *L)//返回线性表长度{ return(L->length);}void Display(SqList *L)//当顺序表不为空时,顺序显示L中各元素的值{ int i; if(ListEmpty(L))//判断是否为空,如果为空,则返回值为TRUE,无任何显示 return; for(i=0;i<L->length;i++) { cout<<L->data[i]<<' '; } cout<<endl;}bool GetElem(SqList *L,int i,int &e)//求某个数据元素的值,返回第i个元素的值,存在e中{ if(i<1||i>L->length) return false; e=L->data[i-1];//形实参共享空间 return true;}int LocateElem(SqList *L,int e)//查找第一个值域和e相等的逻辑位序{ int i=0; while(i<L->length&&L->data[i]!=e) i++; if(i>=L->length)//即超出范围,证明不存在,输出0 return 0; else return i+1; //否则输出逻辑位置}bool ListInsert(SqList*&L,int i,int e)//在顺序表的第i个位置插入新元素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;//剩下的i处空位置插入e L->length++;//顺序表长度+1 return true;//成功插入返回true;}bool ListDelete(SqList*&L,int i,int &e)//删除顺序表的第i个元素(元素前移){ int j; if(i<1||i>L->length) return false; i--; e=L->data[i];//把要删除的值复制给e,便于输出 for(j=i;j<L->length-1;j++)//元素前移; { L->data[j]=L->data[j+1]; } L->length--; return true;}int Biggest(SqList*L)//求最大值{ int m=0; for(int i=0;i<L->length;i++) { if(L->data[i]>m) { m=L->data[i]; } } return m;}void paixv(SqList*L)//排序{ int m; for(int i=0;i<L->length;i++) { for(int j=1;j<L->length;j++) { if(L->data[j-1]>L->data[j]) { m=L->data[j-1]; L->data[j-1]=L->data[j]; L->data[j]=m; } } }}void jiudipai(SqList*&L)//就地排序{ int qq; for(int i=L->length-1,j=0;j<(L->length+1)/2;i--,j++) { qq=L->data[i]; L->data[i]=L->data[j]; L->data[j]=qq; }}int main(){ int m; SqList *L; Initlist(*&L); //Display(*&L); printf("输入n个元素,依次填入顺序表\n"); int n; cout<<"请输入 n :"<<endl; cin>>n; for(int i=1;i<=n;i++) { cin>>m; ListInsert(*&L,i,m); } Display(*&L); cout<<"求最大元素?"<<endl; printf("%d\n",Biggest(*&L)); int k,t; cout<<"请输入数字k和t,代表第k个元素之前插入数字t"<<endl; cin>>k>>t; ListInsert(*&L,k,t); Display(*&L); int q; cout<<"请输入数字q,代表删除第几个元素"<<endl; cin>>q; int zz; ListDelete(*&L,q,zz); Display(*&L); cout<<"元素顺序排序"<<endl; paixv(*&L); Display(*&L); cout<<"元素就地排序"<<endl; jiudipai(*&L); Display(*&L); return 0;}
1 0
- 顺序表的建立,实现及操作
- 静态查找表的建立及顺序查找操作
- 编程实现顺序表的以下基本操作:建立顺序表,修改顺序表,插入顺序表,删除顺序表。
- 线性表的基本操作实现及其应用之顺序表的建立与操作实现
- 线性表的顺序存储及操作实现
- (四)线性表的顺序实现及相关操作
- 【线性表】顺序存储、链式存储的实现及操作
- 线性表的顺序存储及操作实现
- 顺序链表的常用操作实现及注意事项
- Sequence_List 顺序表的实现及各种操作
- 集合的顺序存储及操作实现
- 队列顺序存储的实现及操作
- 【数据结构】采用数组的形式实现顺序表的建立、插入、删除等操作
- Java实现顺序表及常见操作
- java建立顺序表及增删改查功能实现
- 顺序表的建立
- 顺序表的建立、插入、删除、查找、遍历操作
- 实验一顺序表的建立与操作
- HDU4288Coder(线段树+离线查询)
- HDU 2795---Billboard
- OSX mysql 操作
- ubuntu安装及使用教程
- day6
- 顺序表的建立,实现及操作
- Linux-root初始密码
- 以26个英文字母开头的动物名字
- selenium基本介绍及环境搭建
- POI工具类遇到的问题
- Volist奇数偶数数据不同样式输出
- log4j 配置以及无法在控制台打印问题详解
- NoSql-几种NoSql数据库系统的对比
- OpenStack从数据库中删除掉Compute节点(hypervisor)