📄 si.cpp
字号:
#include<iostream.h>
#include<stdio.h>
#include<malloc.h>
#define Init_List_Size 100
#define ListIncrement 10 //不够时,一次能增加的数据元素的数目
#define error 0
#define ok 1
#define overflow -1
typedef int status;
typedef struct
{
int *elem;
int length;
int listsize;
}Sqlist;
status InitList(Sqlist &L)
{
L.elem=(int*)malloc(Init_List_Size* sizeof(int));
if(! L.elem) return (overflow);
L.listsize=Init_List_Size;
L.length=0;
return ok;
}
status CreatList(Sqlist &L,int n)
{
int i;
for(i=0;i<n;i++)
scanf("%d",&L.elem[i]);
return ok;
}
status InsertElem(Sqlist &L,int i,int e)
{
int s=1;
Sqlist newbase;
if(i<0 || i>L.length+1) return error;
if(L.length>=L.listsize)
newbase.elem=(int*)realloc(L.elem,(L.listsize+ListIncrement)*sizeof(int));
if(!newbase.elem) return (overflow);
L.elem=newbase.elem;
L.listsize+=ListIncrement;
int *p,*q;
p=&L.elem[i-1];
for(q=&L.elem[L.length-1];q>=p;q--)
*(q+1)=*q;
*p=e;
L.length++;
for(i=0;i<L.length;i++)
s=s*10;
return s;
}
status DeteleElem(Sqlist &L,int i,int &e)
{
if(i<0 || i>L.length) return error;
int *p,*q;
p=&L.elem[i-1];
e=*p;
q=&L.elem[L.length-1];
for(p;p<q;p++)
*p=*(p+1);
return e;
}
main()
{
int i,j,a,b,n,c;
Sqlist L;
cout<<"初使化一个线性表"<<InitList(L)<<endl;
cout<<"向线性表中输入数据元素"<<endl;
cout<<"输入线性表的数据的数目:";
cin>>a;
CreatList(L,a);
cout<<"2.添加一个数据元素"<<endl;
cout<<"3.删除一个数据元素"<<endl;
cout<<"输入你向选择的项目:";
cin>>n;
if(n==2)
{
cout<<"输入你要添加的数据的位置和数据:";
cin>>i>>b;
cout<<InsertElem(L,i,b);
}
if(n==3)
{
cout<<"输入你要删除的数据的位置和数据:";
cin>>j;
cout<<DeteleElem(L,i,c);
}
return ok;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -