📄 1-11.cpp
字号:
#include <stdio.h>
#include<malloc.h>
#define list_init_size 100
#define listincrement 10
typedef struct
{
int * elem;
int length;
int listsize;
}sqlist;
void Initlist_sq(sqlist &l)
{
int n;
l.elem=(int*) malloc(list_init_size*sizeof(int));
if(!l.elem) printf("存储分配失败!");
l.length=0;
l.listsize=list_init_size;
printf("请输入你要输入数据的个数!\n");
scanf("%d",&n);
printf("请输入数据!\n");
l.length=n;
for(int i=0;i<n;i++)
scanf("%d",&l.elem[i]);
}
void sort_sq(sqlist &l)
{
int i,j,t;
for(i=0;i<l.length;i++)
for(j=i+1;j<l.length;j++)
if(l.elem[j]<l.elem[i])
{
t=l.elem[i];
l.elem[i]=l.elem[j];
l.elem[j]=t;
}
printf("排序后线性表各元素为:\n");
for(i=0;i<l.length;i++)
{printf("%d",l.elem[i]);
printf(" ");
}
printf("\n");
}
void listinsert_sq(sqlist & l,int e)
{
int *newbase;
if(l.length>=l.listsize)
{
newbase=(int*) realloc(l.elem,(l.listsize+listincrement)*sizeof(int));
if(!newbase) printf("存储分配失败");
l.elem=newbase;
l.listsize+=listincrement;
}
int p,i=0;
p=l.elem[i];
while(p<=e)
{
++i;p=l.elem[i];
}
int *q;
q=&(l.elem[i]);
int *a;
for(a=&(l.elem[l.length-1]);a>=q;--a) *(a+1)=*a;
*q=e;
++l.length;
printf("插入元素后线性表各元素为:\n");
for(i=0;i<=l.length-1;i++)
printf("%d ",l.elem[i]);
printf("\n");
}
void listdelete_sq(sqlist &l,int e)
{
int i=0;
int *q,*a;
for(i=0;i<=l.length-1;++i)
{
if(l.elem[i]==e)
{
q=&(l.elem[i]);
a=l.elem+l.length-1;
for(++q;q<=a;++q)*(q-1)=*q;
--l.length;
}
}
printf("删除元素后线性表各元素为:\n");
for(i=0;i<=l.length-1;i++)
printf("%d ",l.elem[i]);
}
void main()
{
sqlist l;
int a;
int i=1;
char word;
while(i)
{
printf("请选择你要进行的操作:A为建立线性表;B为插入数据;C为删除数据;D为退出\n");
scanf("%c",&word);
switch(word)
{
case'A':Initlist_sq(l);sort_sq(l);break;
case'B':printf("请输入要插入的数:\n");scanf("%d",&a);listinsert_sq(l,a);break;
case'C':printf("请输入要删除的数:\n");scanf("%d",&a);listdelete_sq(l,a);break;
case'D':i=0;break;
default:printf("输入错误!");break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -