|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<iostream.h>
typedef int datatype; //线性表结点的数据类型,假设是 int
const int maxsize=100; //线性表可能的最大长度,这里假设是 100;
typedef struct
{
datatype data[maxsize+1]; // 定义线性表的数据
int n; //线性表的长度
}sqlist;
//建表
sqlist *creat()
{
datatype x;
int i=1;
sqlist *L;
L=new sqlist;
while(cin>>x,x!=0)
{
L->data[i]=x;
i++;
}
L->n=i-1;
L->data[0]=L->n;
return L;
}
//插入函数
int insert(sqlist *L,datatype x,int i) { //将 x 插入到顺序表 L得到第 i 个位置
int j;
if(L->n==maxsize) { cout<<"表满,不能插入!(上溢)\n"; return -1; }
if(i<1 || i>L->n+1) {cout<<"非法插入位置!\n"; return 0; }
L->n++;
for(j=L->n;j>i;j--)
L->data[j]=L->data[j-1]; //结点后移
L->data[i]=x;
return 1;
}
//删除函数
int deletex(sqlist *L,datatype x) {
if(L->n==0) { cout<<"表空,不能删除!(下溢)\n"; return 0;}
for(int j=1;j<=L->n;j++)
if(L->data[j]==x) //查找 匹配值 x
for(;j<=L->n;j++)
L->data[j]=L->data[j+1]; //结点前移
L->n--;
return 1;
}
//显示顺序表
void disp(sqlist *L)
{
cout<<"顺序表的表长为 "<<L->n<<"\n 数据:\n";
for(int i=1;i<=L->n;i++)
cout<<"序号: "<<i<<" 数据: "<<L->data<<endl;
}
void main()
{
sqlist *L=NULL;
datatype x;
int ch,i;
XX: while(1)
{
cout<<" 主菜单 \n "
<<" 0.退出\n "
<<" 1.建立顺序表\n "
<<" 2.插入数据\n "
<<" 3.删除数据\n "
<<" 4.显示顺序表\n ";
cin>>ch;
switch(ch)
{
case 0:
delete(L); //退出程序,撤销顺序表
return;
break;
case 1:
cout<<"请输入顺序表的数据(输入 0 退出!)"<<endl;
L=creat();
cout<<"顺序表已建成!\n";
break;
case 2:
cout<<"请输入您要插入的值\n";
cin>>x;
cout<<"插入的位置:\n";
cin>>i;
if( insert(L,x,i)==1 ) cout<<"插入成功!"<<endl;
else cout<<"插入失败! "<<endl;
break;
case 3:
cout<<"请输入您要删除的值\n";
cin>>x;
if(deletex(L,x)==1) cout<<"成功删除数据 "<<x<<endl;
else cout<<"该顺序表没有数据 "<<x<<endl;
break;
case 4:
disp(L);
break;
default:
cout<<" 输入非法! 请输入 0~4选项!"<<endl;
goto XX;
}
}
}
为何运行出现该内存不能为“read”,该怎么解决?
[/i][/i] |
|