AZY学习顺序表

时间限制: 1000 ms 内存限制: 65536 kb
总通过人数: 0 总提交人数: 0

题目描述

学习数据结构的那个夏天,是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!

Hint

请务必用顺序表实现。

可能的代码:

......
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内容。

相关推荐