语言:C++
注意点:create函数里面最后输入-1退出时,-1这个值也存入了顺序表里面,当然顺序表的长度也就自然的加1,也就是顺序表的最后一个值存的是-1。
#include<iostream>
using namespace std;
#define maxsize 100
#define elemtype int
//动态定义顺序表结构体
typedef struct{
elemtype *elem;
int length;
}Sqlist;
//初始化顺序表
bool init(Sqlist &l)
{
l.elem=new elemtype[maxsize];
if(!l.elem) return false; //初始化失败
l.length=0; //初始化为0
return true;
}
//创建顺序表
bool create(Sqlist &l)
{
int x,i=0; //x变量用来接收输入的数据,i变量用来记录地址
while(x!=-1)
{
if(l.length==maxsize)
{
cout<<"顺序表已满";
return false;
}
cin>>x;
l.elem[i++]=x;
l.length++;
}
return true;
}
//取值
bool getValue(Sqlist l,int i,int &e)
{
if(i<1||i>l.length) return false; //判断下标是否规范
e=l.elem[i-1];
return true;
}
//查找
int getLocate(Sqlist &l,int e)
{
for(int i=0;i<=l.length-1;i++)
if(l.elem[i]==e)
{
cout<<i<<endl;
return i+1;
}
return -1; //未找到返回-1
}
//插入
bool insertVlaue(Sqlist &l,int i,int e)
{
if(i<1||i>l.length) return false;
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 deleteValue(Sqlist &l,int i,int &e)
{
if(i<1||i>l.length) return false;
e=l.elem[i-1];
for(int j=i-1;j<l.length-1;j++)
{
l.elem[j]=l.elem[j+1];
}
l.length--;
return true;
}
//查看顺序表元素
void view(Sqlist l)
{
for(int j=0;j<=l.length-1;j++)
{
cout<<l.elem[j]<<" ";
}
}
int main()
{
Sqlist l;
int e;
init(l);
create(l);
//测试查找函数
//int loc=getLocate(l,2);
//cout<<loc<<endl;
//测试取值函数
//getValue(l,2,e);
//cout<<e;
//测试增加函数
//insertVlaue(l,2,3);
//view(l);
//测试删除函数
deleteValue(l,2,e);
view(l);
}