#include<stdio.h>
#include<stdlib.h>
#define Max 10
typedef int ElemType;
typedef struct SqList
{
ElemType elem[Max];
int length;
};
typedef struct SqList *va;
typedef va List;
List InitList()//初始化
{
List L;
L=(List)malloc(sizeof(struct SqList));
L->length=0;
return L;
}
int ListInsert(List L,int e)//插入
{
int k;
L->length++;
k=L->length;
L->elem[k-1]=e;
return 1;
}
int ListDelete(List L,int i)//删除
{
int j;
if(i<1||i>L->length)
printf("过界\n");
for(j=i;j<L->length;j++)
L->elem[j-1]=L->elem[j];
L->length--;
return 1;
}
int Printf(List L)//输出
{
int i;
for(i=0;i<L->length;i++)
printf("%d\n",L->elem[i]);
return 1;
}
int ListSort(List L)//排序
{
int i,j;
int t;
for(i=0;i<L->length;i++)
{
for(j=i+1;j<L->length;j++)
{
if(L->elem[i]>L->elem[j])
{
t=L->elem[i];
L->elem[i]=L->elem[j];
L->elem[j]=t;
}
}
}
return 1;
}
int ListInversion(List L)//逆置
{
int i,j,k;
int t;
k=L->length;
j=k/2;
for(i=0;i<=j;i++)
{
t=L->elem[i];
L->elem[i]=L->elem[k-i-1];
L->elem[k-i-1]=t;
}
return 1;
}
int main()
{
int i;
int n;
int x,y,t;
List list;
list=InitList();
printf("1.在顺序表的适当位置上插入元素,使该表依然有序\n");
printf("2.删除线性表中的指定元素\n");
printf("3.将有序顺序表就地逆置\n");
printf("4.结束程序\n");
printf("初始顺序表va中有几个元素\n");
scanf("%d",&n);
list->length=n;
printf("请输入初始顺序表中的元素\n");
for(i=0;i<n;i++)
{
scanf("%d",&list->elem[i]);
}
ListSort(list);
Printf(list);
while(1)
{
printf("使用那一个功能\n");
scanf("%d",&t);
if(t==1)
{
printf("输入要插入的元素\n");
scanf("%d",&x);
ListInsert(list,x);
ListSort(list);
Printf(list);
}
if(t==2)
{
printf("请输入要删除的元素的位置\n");
scanf("%d",&y);
ListDelete(list,y);
Printf(list);
}
if(t==3)
{
ListInversion(list);
Printf(list);
}
if(t==4)
{
break;
}
}
return 0;
}
实验一第一题
最新推荐文章于 2024-05-14 11:00:23 发布