数据结构——顺序结构
程序员文章站
2022-03-24 17:37:26
...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXN 100
int i=1;
typedef struct{
char num[20];
char name[50];
int sum;
}Elemtype;
typedef struct{
Elemtype *elem;//灵活运用动态数组
int length;//当前数据总数
int listsize;
}Sqlist;
Sqlist L;
void Init()//构造空的顺序表L
{
L.elem=(Elemtype *)malloc(MAXN*sizeof(Elemtype));
L.length=0;
L.listsize=MAXN;
}
void put()//输入
{
scanf("%s",L.elem[i].num);
scanf("%s",L.elem[i].name);
scanf("%d",&L.elem[i].sum);
L.length=i;
if(L.length>=L.listsize)//如果不够重新申请
{
Elemtype *newbase;
newbase=(Elemtype *)realloc(L.elem,(10+L.listsize)*sizeof(Elemtype));
if(!newbase)
{
L.elem=newbase;
L.listsize+=10;
}
}
i++;
}
void haha()
{
int j;
for(j=1;j<=L.length;j++)
{
printf("%s %s %d\n",L.elem[j].num,L.elem[j].name,L.elem[j].sum);
}
}
void ch(int k,Elemtype p)
{
int n=L.length,j;
for(j=n;j>=k;j--)
{
L.elem[j+1]=L.elem[j];
}
L.length=n+1;
L.elem[k]=p;
}
void shan(int k)
{
int j,n=L.length;
for(j=k+1;j<=n;j++)
{
L.elem[j-1]=L.elem[j];
}
L.length=n-1;
}
void nizhi()
{
int j,n=L.length;
Elemtype t;
for(j=1;j<=n/2;j++)
{
t=L.elem[j];
L.elem[j]=L.elem[n-j+1];
L.elem[n-j+1]=t;
}
}
//1.输入
//2.输出
//3.插入
//4.删除
//5.逆置
//其实顺序表不太需要插入,删除
int main()
{
int n;
Init();
while(scanf("%d",&n)!=-1)
{
if(n==1)
put();
if(n==2)
haha();
if(n==3)
{
int k;
Elemtype p;
scanf("%d",&k);
scanf("%s%s%d",p.num,p.name,&p.sum);
ch(k,p);
}
if(n==4)
{
int k;
scanf("%d",&k);
shan(k);
i--;
}
if(n==5)
{
nizhi();
}
}
return 0;
}