数据结构--顺序表的插入、删除、查找等操作,有详细解释,保证你喜欢!

#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#define maxsize 50

typedef struct
{
int* data;//int*型元素
int length;//顺序表的实际长度
int listsize;//顺序表的最大长度
}sqlist;

void creatsqlist(sqlist &list)
{
list.data=(int*)malloc(sizeof(int)*maxsize);//开辟一个名为l的顺序表
if(!list.data)//判断顺序表是否存在
exit(1);
list.length=0;
list.listsize=maxsize;
}

void initsqlist(sqlist &list)//初始化操作
{
int* p;
int n;
cout<<"请输入顺序表元素数(1-50):"<<endl;//让用户输入顺序表元素个数
cin>>n;
cout<<"您申请的顺序表的长度是---"<<n<<endl;
p=list.data;//p指向头指针
cout<<"请依次输入无重复数字的有序顺序表(相邻数据用空格隔开,回车键完成输入):"<<endl;
for(int i=0;i<n;i++)//逐个赋值
{
cin>>*p;
p++;
list.length++;
}
cout<<"您输入的递增顺序表为:"<<endl;//打印出初始化的顺序表
for(i=0;i<n;i++)
cout<<list.data[i]<<"\t";
cout<<endl;
}

void put(sqlist &list) //输出函数
{ int i;
for(i=0;i<list.length;i++)
cout<<list.data[i]<<"\t";
cout<<endl;
}

void locateElem(sqlist &list)
{
int i,j=0,b;
cout<<"请输如要查找的字符:\n";
cin>>b;
for(i=0;i<list.length;i++)
if(list.data[i]==b)
{j=i+1;break;}
if(j)
cout<<"该数字的位置是:"<<j<<endl;
else
cout<<"很抱歉,表中没有这个数字,请重试!"<<endl;
}

void insert(sqlist &list)//插入函数
{
int i;
cout<<"您想在第几位插入数字:\n";
cin>>i;
int x;
cout<<"请输入要插入的数字:\n";
cin>>x;
int j;
if(i<0||i>list.length)
{
cout<<"位置错误"<<endl;
put(list);
}
else
{ for(j=list.length;j>=i;j--)
list.data[j]=list.data[j-1];
list.data[j]=x;
list.length++;
}
cout<<"插入操作完成后的顺序表:"<<endl;
put(list);
}

void delete1(sqlist &list)//删除第i个位置的数字的函数
{
int i,b;
cout<<"请输入你想要删除数据的位置:"<<endl;
cin>>i;
if(i<0||i>list.length)
{cout<<"输入错误!"<<endl;return;}
else
{b=list.data[i-1];
for(i=i-1;i<list.length-1;i++)
list.data[i]=list.data[i+1];
--list.length;
cout<<"需要删除的元素是:"<<b<<endl;
cout<<"删除操作完成后的顺序表是:"<<endl;
put(list);
}
}

void delete2(sqlist &list)//删除指定数字的函数
{
int b;
cout<<"输入您想删除的数字:"<<endl;
cin>

>b;
int i,j=0;
for(i=0;i<list.length;i++)
{
if(list.data[i]==b)
{j=i+1;break;}
}
if(j!=0)
{
for(;i<list.length-2 ;i++)
list.data[i]=list.data[i+1];
--list.length;
cout<<"该位置是第"<<i<<"位"<<endl;
cout<<"删除操作完成后的顺序表是:"<<endl;
put(list);
}
else
cout<<"很遗憾,表中没有找到此数字,删除不成功,请重试!"<<endl;
}

int main()
{
in
t flag;
sqlist l;
creatsqlist(l);
initsqlist(l);
cout<<endl<<"**************************************************************************"<<endl;
cout<<"请输入要进行的操作序号:\n";
cout<<"1.插入字符"<<endl<<"2.查找数字"<<endl<<"3.删除第i位数字"<<endl<<"4.删除指定数字"<<endl<<"0.退出"<<endl<<endl;
cin>>flag;
do
{
switch(flag)
{case 1:
insert(l);break;
case 2:
locateElem(l);break;
case 3:
delete1(l);break;
case 4:
delete2(l);break;
default:
cout<<"请重新输入||代码错误"<<endl;}
cout<<"**************************************************************************"<<endl;
cout<<"请输入要进行的操作序号:\n";
cout<<"1.插入字符"<<endl<<"2.查找数字"<<endl<<"3.删除第i位数字"<<endl<<"4.删除指定数字"<<endl<<"0.退出"<<endl<<endl;
cin>>flag;
}
while(flag!=0);
return 0;
}

相关文档
最新文档