线性表之顺序表 源代码
来源:互联网 发布:网络用语lay了什么意思 编辑:程序博客网 时间:2024/06/05 12:10
线性表概述
线性表是最基本、最简单、也是最常用的一种数据结构。在线性表中数据元素之间的关系是线性,数据元素可以看成是排列在一条线上或一个环上。
线性表分为静态线性表和动态线性表,常见的有顺序表(静态的)、单向链表(动态的)和双向链表(动态的)。
线性表的操作主要包括:
(0)初始化线性表
(1)计算表的长度n。
(2)线性表是否为空
(3)将元素添加到线性表的末尾
(4)获取第i个元素,0≤i < n。
(5)清除线性表
(6)返回列表中首次出现指定元素的索引,如果列表不包含此元素,则返回 -1。
(7)返回列表中最后一次出现指定元素的索引,如果列表不包含此元素,则返回 -1。
(8)将新元素插入第i个位置,0≤i < n,使原来的第i,i+1,…,n–1个元素变为第i+1,i+2,…,n个元素。
(9)更改第i个元素
(10)删除第i个元素,0≤i < n,使原来的第i+1,i+2,…,n–1个元素变为第i,i+1,…,n–2个元素
#include<algorithm>#include<iostream>using namespace std;struct List{int *elem;int length;int maxsize;};void Init_list(List &L) //初始化线性表 {L.maxsize=100;L.elem=new int[L.maxsize];if(L.elem==NULL) { cout<<"动态非配失败"<<endl;exit(1); } L.length=0; }void Clear_list(List &L)//清空原始表 {if(L.elem!=NULL){delete []L.elem;L.elem=NULL;} L.length=0;L.maxsize=0;}void Locate_list(List &L,int e)//查找元素的位置 {for(int i=0;i<L.length;i++){if(L.elem[i]==e) cout<<"您所查找元素的位置序号为"<<i+1<<endl; }}void Traverse_list(List &L)//遍历线性表中的元素,若遍历记录类型,则需要插入操作符 {for(int i=0;i<L.length;i++){if(i!=(L.length-1)) cout<<L.elem[i]<<" ";else cout<<L.elem[i]<<endl;}}void buffersort_list(List &L){for(int i=0;i<L.length-1;i++){for(int j=i+1;j<L.length-1;j++){if(L.elem[j]>L.elem[j+1]) { int temp=L.elem[j]; L.elem[j]=L.elem[j+1]; L.elem[j+1]=temp; }}}}int Length_list(List &L)//计算线性表长度 {return L.length;}bool Insert_list(List &L,int i,int e)//插入元素 {if(i<1||i>L.length+1) cout<<"i值无效"<<endl;if(L.length==L.maxsize){ cout<<"当前存储空间已满"<<endl; int k=sizeof(int); L.elem=(int *)realloc(L.elem,2*L.maxsize*k); if(L.elem==NULL) { cout<<"动态分配失败"<<endl; exit(1); } L.maxsize=2*L.maxsize; } for(int j=L.length-1;j>=i-1;j--){L.elem[j+1]=L.elem[j];} L.elem[i-1]=e;L.length++;return true;}bool Delete_list(List &L,int i) //删除指定元素 {if(L.length==0){ cout<<"线性表为空"<<endl; return false;} if(i<1 ||i>L.length) cout<<"输入i值无效"<<endl; int e=L.elem[i-1];for(int j=i;j<L.length;j++){L.elem[j-1]=L.elem[j];} L.length--;return true; }int main(){int a[10]={0};int i;cout<<"请输入线性表的10个正整数元素:";for(int i=0;i<10;i++) { cin>>a[i]; } cout<<endl; List list; Init_list(list); //初始化线性表 for(i=0;i<10;i++) Insert_list(list,i+1,a[i]); cout<<"遍历新插入的线性表的元素:";Traverse_list(list); Locate_list(list,10); cout<<"该线性表的长度为"<<Length_list(list)<<endl; //sort(L.list,L.list+L.length); buffersort_list(list); cout<<"对该线性表进行升序排列为:"; Traverse_list(list);cout<<"删除指定位置的元素为"<<Delete_list(list,5)<<endl;Traverse_list(list);return 0;}
0 0
- 线性表之顺序表 源代码
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 《线性表之顺序表》
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- Lost Cows(树状数组+二分)
- HDU 4998 Rotate
- 黑马程序员--Set集合
- 实现301页面永久重定向
- phpmyadmin安装教程及配置设置
- 线性表之顺序表 源代码
- 在Windows 2008 R2高端机器上运行SQL Server 2008时,CPU个数的考量
- 《望岳》 杜甫
- vector
- TF-IDF及其算法
- C++11(14):面向对象程序设计
- VC6.0烦恼~
- 继承的面试题
- 当你厌恶一个人时,你要想一下你是否也是这样的一个人