1)顺序表的元素个数可随意设定;
2)可连续测试任意多个元素的插入、删除,(插入、删除位置及要插入元素数值均从键盘输入);
3)任一操作结束后将顺序表中的内容输出;4)可由用户选择退出程序;
#include <stdio.h>
#define MAXLEN 50
typedef int datatype;
typedef struct
{
datatype List[MAXLEN];
int len;
}Seqlist;
Seqlist* initq();
int insertq(Seqlist* la, int n);
int deleteq(Seqlist* la, int n);
int print(Seqlist* la);
int main()
{
Seqlist* la;
int s, n; /* s 选择输入, n 插入或删除数据的个数*/
printf("请输入你的选择: 1---initiate 2---insert 3---delete 4---print 5---exit\nyour choice =\n");
scanf("%d", &s);
while (s != 5)
{
if (s == 1)
{
la = initq();
printf("完成初始化 !\n");
}
else if (s == 2)
{
printf("请输入待插入的数据个数:");
scanf("%d", &n);
insertq(la, n);
print(la);
}
else if (s == 3)
{
printf("请输入待删除的数据个数:");
scanf("%d", &n);
deleteq(la, n);
print(la);
}
else if (s == 4)
{
print(la);
}
else
printf("你的选择是错误的!\n ");
printf("请输入你的选择: 1---initiate 2---insert 3---delete 4---print 5---exit\nyour choice =");
scanf("%d", &s);
}
}
Seqlist* initq() /*初始化*/
{
Seqlist* L;
L = (Seqlist*)malloc(sizeof(Seqlist));
L->len = 0; return L;
}
int insertq(Seqlist* la, int n) /*插入*/
{
while (n)
{
int i, j;/* i插入位置,j顺序表下标 */
float x;
if (la->len == MAXLEN - 1)
{
printf("\n 表已满,不能插入! \n");
return 0;
}
printf("\n 请输入插入的位置:\n");
scanf("%d", &i);
if (i<1 || i>(la->len+1))
{
printf("\n 插入位置错误!\n");
}
else
{
printf("\n 请输入插入元素的的数值 \n");
scanf("%f", &x);
for (j = la->len; j >= i; j--)
la->List[j + 1] = la->List[j];
la->List[i] = x;
la->len++;
n--;
}
}
printf("插入完成!\n");
return 1;
}
int deleteq(Seqlist* la, int n) /*删除*/
{
int i, j; /* i删除位置, j顺序表下标 */
while (n)
{
if (la->len == 0)
{
printf("\n 表空,不能删除!\n");
return 0;
}
printf("请输入删除的位置:");
scanf("%d", &i);
if (i<1 || i>la->len)
{
printf("\n 删除位置错误!\n");
}
else
{
for (j = i + 1; j <= la->len; j++)
la->List[j - 1] = la->List[j];
la->len--;
n--;
}
}
printf("删除完成!\n");
return 1;
}
int print(Seqlist* la) /*显示输出*/
{
int m;
if (la->len == 0)
{
printf("顺序表为空!\n");
return 0;
}
else
{
printf("当前的顺序表为:\n");
for (m = 1; m <= la->len; m++)
printf("List[%d]=%d ", m, la->List[m]);
printf("\n表长为%d\n", la->len);
return 1;
}
}