#include <stdio.h>
#define MaxSize 10
typedef struct //定义
{
int data[MaxSize];
int length;
}SqList;
void InitList(SqList * L) //初始化
{
int i;
for (i = 0; i < MaxSize; i++)
{
L->data[i] = 0;
}
L->length = 0;
}
void ListInput(SqList* L, int i, int n) //第一次输入 i为输入的数 n为下标
{
if (n < L->length)
{
printf("此位置有数,重新输入....\n");
}
else {
L->data[n] = i;
L->length++;
}
}
void ListInsert(SqList* L, int n1, int n2) //n1为下标 n2为输入的数
{
int len = L->length;
if (len == MaxSize)
printf("此表已满\n");
else if (n1 >= 0 && n1 <= len)
{
int j;
for (j = len; j > n1; j--)
{
L->data[j] = L->data[j - 1];
}
L->data[n1] = n2;
L->length++;
}
else
{
printf("输入错误\n");
}
}
void DeleteList(SqList* L, int d) //删除
{
int i;
if (d < 0 || d >= L->length)
{
printf("输入不合法\n");
return;
}
for (i = d; i < L->length-1; i++) //后面一个覆盖前面一个
{
L->data[i] = L->data[i+1];
}
L->data[i] = 0; //最后一个改成0
L->length--;
printf("删除成功!\n");
}
void GetElem(SqList L, int n)
{
if (n > 0 && n <= MaxSize) {
printf("第%d位是%d\n", n, L.data[n - 1]);
}
else {
printf("输入不合法\n");
return;
}
}
void LocateElem(SqList L, int n)
{
int i = 0;
int j = 0;
for (i = 0; i < L.length; i++)
{
if (L.data[i] == n)
{
printf("%d在第%d位\n", n, i + 1);
j++;
}
}
if (j == 0)
printf("没有找到\n");
}
int main()
{
SqList L;
int i = 0;
int num1, num2 = 0; //输入
int del; //删除
InitList(&L);//初始化
printf("请输入你要输入几个数:\n");//第一次输入
int shu;
scanf("%d", &shu);
if (shu > 0 && shu <= MaxSize)
{
for (i = 0; i < shu; i++)
{
scanf("%d", &num1);
ListInput(&L, num1, num2);
num2++;
}
}
else {
printf("输入不合法\n");
return 0;
}
printf("请输入你要在第几个下标插入的什么数:\n"); //插入
int num3, num4;
scanf("%d", &num3);
scanf("%d", &num4);
ListInsert(&L, num3, num4); //num3为下标 num4为输入的数
while (1)
{
printf("是否要删除表:1 删除 0 不删除\n"); //删除
scanf("%d", &del);
if (del == 1)
{
int d;
printf("请输入你要删除表的下标\n");
scanf("%d", &d);
DeleteList(&L, d);
}
else {
break;
}
}
printf("是否需要按位查找 1需要 0不需要\n"); //按位查找
int num5;
scanf("%d", &num5);
if (num5 == 1)
{
int num6;
printf("请输入要查找的位数:");
scanf("%d", &num6);
GetElem(L, num6);
}
printf("是否需要按值查找 1需要 0不需要\n"); //按值查找
int num7;
scanf("%d", &num7);
if (num7 == 1)
{
printf("请输入你要查找的值:\n");
int num8;
scanf("%d", &num8);
LocateElem(L, num8);
}
for (i = 0; i < MaxSize; i++)
{
printf("%d ", L.data[i]);
}
return 0;
}