Problem A: 数据结构:顺序表的插入和删除

Problem A: 数据结构:顺序表的插入和删除

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

Description

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

Input

构造一个顺序表,输入数据只有3行,第1行是一个整数n,表示顺序表元素个数;第2行是n个整数,用这n个整数构造顺序表;第3行表示删除的数据元素的位置。

Output

依次输出顺序表中数据元素,每个元素以换行结束;然后输出被删除的数据元素数值;然后输出被删除后的顺序表的所有元素;最后输出被删除后顺序表的长度。

Sample Input Copy

3
10 20 30
2

Sample Output Copy

10
20
30
20
10
30
2

HINT

#include<stdio.h> //若用printf,scanf,getchar,putchar,gets,puts函数需包含该头文件
#include<malloc.h> //用malloc,free,realloc函数需包含该头文件
#include<stdlib.h>
#define MAXSIZE 100 //设线性表初始分配空间大小
#define LISTINCREMENT 10 //设线性表存储空间分配增量 
#define ERROR 0
#define OVERFLOW 0 
#define OK 1

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:在顺序表中第i个位置(i=1~n)插入元素*****
int ListInsert_Sq(SqList &L,int i,ElemType e){
//--------补充代码--Start------
//1、判断i的合法性
//2、判满(两种处理方式:(1)满了return ERROR (2)利用realloc函数动态增加空间
//3、移动
//4、赋值
//5、表长+1
//--------补充代码--End-------
return OK;
}

//*****4:删除顺序表中第i(i=1~n)个元素,用e返回删除的元素*****
int ListDelete_Sq(SqList &L, int i, ElemType &e)
{
//--------补充代码--Start------
//1、判断i的合法性
//3、赋值
//4、启动
//5、表长-1

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

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

//初始化顺序表
InitList_Sq(La);
//输入元素个数
scanf("%d",&n);
//依次读取n个数据插入顺序表
for(i=1;i<=n;i++)
{
//输入数据元素
scanf("%d",&e);
//插入顺序表
ListInsert_Sq(La,i,e);
}
//按顺序输出顺序表中元素
PrintList(La);

//----------------------------
//输入要删除元素的位置
scanf("%d",&i);
//执行删除
ListDelete_Sq(La,i,e);
//输出删除后的元素
printf("%d\n",e);
//输出删除后的顺序表的内容
PrintList(La);
printf("%d\n",La.length);
return 0;
}