数据结构—顺序表的初始化、数据插入、数据删除、数据展示(C语言)
#include<stdio.h>
#define MAXSIZE 20
#define ERROR 0
#define OK 1
typedef int Datatype;
struct SqList
{
Datatype data[MAXSIZE];
int length;
};
//初始化顺序表元素
void InitList(SqList &L)
{
int n;
printf("请输入数据的个数: ");
scanf("%d",&n);
while (n > MAXSIZE){
printf("越界,请重新输入: ");
scanf("%d",&n);
}
L.length = 0;
int num;
printf("请输入顺序表的数字: ");
for(int i = 0; i < n; i++){
scanf("%d",&num);
L.data[L.length] = num;
L.length++;
}
}
//展示顺序表元素
void show(SqList L)
{
printf("顺序表中的元素是: ");
for (int i = 0;i < L.length;i++){
printf("%d ",L.data[i]);
}
printf("\n");
}
//插入元素
int ListInsert(SqList &L,int i,int elem)
{
if(L.length == MAXSIZE || i < 1 || i > L.length + 1)
return ERROR;
if(i <= L.length){
for(int k = L.length;k >= i;k--){
L.data[k] = L.data[k-1];
}
}
L.data[i-1] = elem;
L.length++;
return OK;
}
//删除元素
int ListDelete(SqList &L,int i,int &elem)
{
if (L.length == 0 || i > L.length || i < 1)
return ERROR;
elem = L.data[i-1];
if (i < L.length){
for(int k = i;k < L.length;k++){
L.data[k-1] = L.data[k];
}
}
L.length--;
return OK;
}
int main(void)
{
SqList L;
InitList(L);
show(L);
printf("插入操作---");
if(ListInsert(L,3,3) == 0){
printf("插入位置非法");
}
else{
show(L);
}
printf("删除操作---");
int e;
if(ListDelete(L,3,e) == 0){
printf("删除位置非法");
}
else{
show(L);
printf("删除的元素为: %d\n",e);
}
return 0;
}
结果展示: