#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define maxsize 1024
typedef int datatype;
typedef struct
{
datatype data[maxsize];
int last;
} sequenlist;
int insert(sequenlist *p, datatype x, int i); //插入函数
int delete(sequenlist *p, int i); //删除函数
int main()
{
sequenlist *p;
int i, ch, n;
p = (sequenlist *)malloc(sizeof(sequenlist));
while (1)
{
printf("请选择: \n");
printf("(1)输入顺序表\t");
printf("(2)插入数据\t");
printf("(3)删除数据\t");
printf("(4)结束\n");
scanf("%d",&ch);
switch (ch)
{
case 1:
printf("请输入顺序表中数据个数n =");
scanf("%d", &n);
printf("\n");
for (i = 0; i < n; i++)
{
printf("请输入第%d个整形数据的值:", i + 1);
if (scanf("%d", &p->data[i]) != 1)
{
printf("\n输入数据类型错误,按任意键退出\n");
system("pause");
return;
}
}
p->last = n - 1;
printf("\n输入的顺序表顺序为:");
for (i = 0; i <= p->last; i++)
printf("%d ", p->data[i]);
printf("\n");
break;
case 2:
printf("\n请输入插入顺序表中的数据:");
scanf("%d",&n);
printf("\n请输入插入顺序表中的位置:");
scanf("%d",&i);
if (insert(p, n, i))
{
printf("插入后的数据顺序表为:");
for (i = 0; i <= p->last; i++)
printf("%d ", p->data[i]);
printf("\n\n");
}
break;
case 3:
printf("请输入要删除数据的位置:");
scanf("%d",&i);
if (delete(p,i))
{
printf("删除后的数据顺序表为:");
for (i = 0; i <= p->last; i++)
printf("%d ", p->data[i]);
printf("\n\n");
}
break;
case 4:
return 0;
}
}
system("pause");
}
int insert(sequenlist *p, datatype x, int i) //插入函数
{
int j;
if (p->last >= maxsize - 1)
{
printf("空间溢出\n");
return 0; //插入失败
}
else if (i < 1 || i > p->last + 2)
{
printf("插入位置非法\n");
return 0; //插入失败
}
else
{
for (j = p->last; j > i; j--)
p->data[j + 1] = p->data[j];
p->data[i - 1] = x;
//printf("%d %d\n",i,j);
p->last = p->last + 1; //长度加1
}
return 1; //插入成功
}
int delete(sequenlist *p, int i) //删除函数
{
int j;
if (p->last + 1 < i || i < 0)
{
printf("删除位置非法\n");
return 0; //删除失败
}
else
{
for (j = i; j <= p->last; j++)
p->data[j - 1] = p->data[j];
p->last--;
}
return 1; //删除成功
}
数据结构之顺序表
最新推荐文章于 2024-01-29 23:38:04 发布