学习数据结构的那个夏天,是AZY心里,有关大学最美好的回忆(应该没有之一)。 而学习顺序表的那几天,则是AZY心里,有关那学期数据结构课程最轻松的回忆(也许也没有之一)。
——这就是我最想留住的幸运。
顺序表不像树那样复杂,也不像图那样难懂。它是(最)简单的数据结构之一,是线性表的一种,现规定如下操作:
Ins X Y: 在顺序表中的X位置插入Y元素,并遍历输出当前顺序表的所有元素。
Del X:删除顺序表中的X元素(即值为X的元素),如果有多个X元素,只删除第一个,并遍历输出当前顺序的所有元素。
Loc X:输出顺序表中X元素的所在的位置,如果有多个X元素,只输出第一个。
Get X:输出顺序表中X位置上的元素。
多组测试数据, 对于每组测试数据,首先输入两个整数n,m(0<m <n<100),分别表示顺序表初始有n个元素,m次操作。
接下来是n个整数,表示顺序表中的n个元素。 然后是m次操作,命令是Ins X Y ,Del X , Loc X , Get X中的一种,其中的X,Y均为整数。
对于每组数据,输出有m行,对应m次操作: 如果操作不合法,则输出"Wrong input!"。
5 6
1 3 4 5 6
Ins 4 7
Ins 8 10
Del 6
Del 10
Loc 5
Loc 10
1 3 4 7 5 6
Wrong input!
1 3 4 7 5
Wrong input!
5
Wrong input!
请务必用顺序表实现。
可能的代码:
......
typedef int ElemType;
typedef struct
{
ElemType date[MAXN];
int length;
}SqList;
void CreatList(SqList * &L,ElemType a[],int n)
{
int i;
L=(SqList *)malloc(sizeof(SqList));
for(i=0;i<n;i++)
L->date[i]=a[i];
L->length=n;
}
void DispList(SqList *L)
{
int i;
if(L->length > 0)
{
for(i=0;i< L->length - 1;i++)
printf("%d ",L->date[i]);
int j = L->length - 1;
printf("%d\n",L->date[j]);
}
}
......
只要用顺序表实现即可,不要求和上述代码完全相同。对数组实现的表的代码不熟悉的同学可查阅教材P35-P38内容。