Problem B: 数据结构:顺序表的查找和翻转

Problem B: 数据结构:顺序表的查找和翻转

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 2082  Solved: 1276
[Submit] [Status] [Web Board] [Creator:]

Description

顺序表是数据结构中一种最基本的数据结构,它是用连续存储空间结构实现的线性表。主要包括顺序表操作,阅读顺序表数据结构定义、阅读顺序表的初始化、阅读顺序表的输出、完成查找操作、完成翻转操作。

Input

构造一个顺序表,输入数据只有4行,第1行是一个整数n,表示顺序表元素个数;第2行是n个整数,用这n个整数构造顺序表;第3行和第4行输入两个待查找的数据元素的值。

Output

依次输出顺序表中数据元素,每个元素以换行结束。然后输出2个被查找元素的位置(未找到返回0)。最后输出被翻转后的顺序表的所有元素。

Sample Input Copy

4
11 22 33 44
22
55

Sample Output Copy

11
22
33
44
2
0
44
33
22
11

HINT

程序框架

#include<stdio.h> //若用printf,scanf,getchar,putchar,gets,puts函数需包含该头文件
#include<malloc.h> //用malloc,free,realloc函数需包含该头文件

#define MAXSIZE 100 //设线性表初始分配空间大小
typedef int ElemType;  //先设定数据元素的类型为整型

//0:定义顺序表的结构类型
typedef struct{
ElemType *elem;
int length;
int listsize;
}SqList;

//1:初始化顺序表
int InitList_Sq(SqList &L )
{
L.elem=(ElemType*)malloc(sizeof(ElemType)*MAXSIZE);
if (!L.elem) return 0;  
L.length=0;
L.listsize=MAXSIZE;
return 1;
}

//2:打印顺序表中所有元素
void PrintList(SqList &L)
{
int i;
for(i=0;i<L.length;i++)
printf("%d\n",L.elem[i]);
}

//3:在顺序表中查找值为e的元素,返回其位置,没有返回0
int Location_Sq(SqList L, ElemType e)
{
//--------补充代码--Start------

//--------补充代码--End-------
return 0;
}

//4:翻转顺序表
void ReverseList(SqList &L)
{
//--------补充代码--Start------

//--------补充代码--End-------
}

//主函数
int main()
{
//以下代码请认真阅读,切勿做任何修改
SqList La;
int i,n,e;

//初始化顺序表
InitList_Sq(La);
//输入元素个数
scanf("%d",&n);
//依次读取n个数据插入顺序表
for(i=0;i<n;i++)
{
//输入数据元素
scanf("%d",&e);
//插入顺序表
La.elem[i]=e;
}
//数据元素个数赋值
La.length=n;

//-----------------------------------
//按顺序输出顺序表中元素
PrintList(La);

//-----------------------------------
//执行2次查找操作
//输入第1次要查找的数据元素值
scanf("%d",&e);
//执行查找,输出第1次被查找的数据元素的位置
printf("%d\n",Location_Sq(La, e));
//输入第2次要查找的数据元素值,执行查找
scanf("%d",&e);
//执行查找,输出第2次被查找的数据元素的位置
printf("%d\n",Location_Sq(La, e));

//-----------------------------------
//执行翻转操作
ReverseList(La);
//输出翻转后的顺序表的内容
PrintList(La);
return 0;
}