数据结构之顺序表
Posted 黄小鱼ZZZ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构之顺序表相关的知识,希望对你有一定的参考价值。
顺序表的思想容易了解,但是代码不容易掌握,我这里根据老师所提供的代码进行一下简单的总结
这个代码包含顺序表的查找,插入,删除,建表,输出数据
#include<iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef int Elemtype;
#define MAXSIZE 100
typedef struct
Elemtype *elem;
int Length;
Sqlist;
Status InitList_Sq(Sqlist &L)//建立一个顺序表
L.elem=new Elemtype[MAXSIZE];
if(!L.elem)//判断是否为空
exit(OVERFLOW);
L.Length=0; //线性表初始值为0
return OK;//建好之后返回
Status LocateElem_Sq(Sqlist L,int n)//对线性表进行处理,找出要求的数字
for(int i=0;i<L.Length;i++) //一定要注意Sqlist L与Sqlist &L的区别
if(L.elem[i]==n)
return i+1;
return 0;
Status ListInsert_Sq(Sqlist &L,int i,Elemtype b)//插入所需要的数字
if(i<0||L.Length+1<i)
return ERROR;
if(i>=MAXSIZE)
return ERROR;
for(int r=L.Length-1;r>=i-1;r--)
L.elem[r+1]=L.elem[r]; //对顺序表进行处理,插入目标数据
// cout<<L.elem[r+1];
// cout<<"执行了"<<endl;
L.elem[i-1]=b;
L.Length++;
// for(int t=0;t<L.Length;t++)
// cout<<L.elem[t]<<" ";
// cout<<L.Length<<endl;
return OK;
Status ListDelete_Sq(Sqlist &L,int m,Elemtype &temp)//删除所指定的数字
if(m<0||m>L.Length) //判断是否异常
return ERROR;
if(m>=MAXSIZE)//判断是否异常
return ERROR;
temp=L.elem[m-1];
for(int j=m;j<=L.Length;j++) //对顺序表进行处理,删除目标数据
L.elem[j-1]=L.elem[j];
L.Length--;
// for(int i=0;i<L.Length;i++)
// cout<<L.elem[i]<<" ";
return OK;
int main()
Sqlist L;
int i,j,k,t,n,m,choose;
int a,b,c,d,e,number,flag;
cout<<"1. 建立顺序表\\n";
cout<<"2. 输入数据\\n";
cout<<"3. 查找\\n";
cout<<"4. 插入\\n";
cout<<"5. 删除\\n";
cout<<"6. 输出数据\\n";
cout<<"0. 退出\\n\\n";
choose=-1;
while(true)
cout<<"请选择你的操作:\\n";
cin>>choose;
if(!choose)
break;
switch(choose)
case 1:
if(InitList_Sq(L))
cout<<"顺序表建立成功!\\n";
else
cout<<"顺序表建立失败!\\n";
break;
case 2:
cout<<"请输入要建表的数字的个数:\\n";
cin>>number;
cout<<"请输入"<<number<<"个数字:\\n";
for(i=0;i<number;i++)
cin>>L.elem[i];
L.Length=number;
cout<<endl;
break;
case 3:
cout<<"请输入要查找的数字:\\n";
cin>>n;
flag=LocateElem_Sq(L,n);
if(flag)
cout<<n<<"是第"<<flag<<"个数 。";
else
cout<<"顺序表中不存在该数字!请确认。。。";
cout<<endl;
break;
case 4:
cout<<"请输入两个数字,分别代表插入的位置和插入的数字:\\n";
cin>>a>>b;
if(ListInsert_Sq(L,a,b))
cout<<"插入成功!";
else
cout<<"插入失败!";
cout<<endl<<endl;
break;
case 5:
cout<<"请输入要删除的数字的位置:\\n\\n";
cin>>m;
//flag=;
if(ListDelete_Sq(L,m,d))
cout<<"删除成功!\\n要删除的数字是:"<<d<<endl<<endl;
else
cout<<"删除失败!"<<endl<<endl;
break;
case 6:
cout<<"当前顺序表为:\\n";
for(j=0;j<L.Length;j++)
cout<<L.elem[j]<<" ";
cout<<endl<<endl;
break;
default:
break;
return 0;
以上是关于数据结构之顺序表的主要内容,如果未能解决你的问题,请参考以下文章