马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为什么输入21、18、30、75、42、56但是表里面却是空的#include <stdio.h>
#include <stdlib.h>
#define MaxSize 50
typedef int ElemType; // 把int替换成了Elemtype
typedef struct SqList
{
ElemType data[MaxSize] = {0}; // 可以看作是 int data[MaxSize];
int length;
} SqList; // 用typedef把struct SqList定义成SqList就不需要再输入struct SqList,可以直接输入SqList
// 初始化顺序表
void InitList(SqList *L)
{
L->length = 0; // 将线性表的长度初始化为0,表示顺序表中当前没有任何元素。
}
// 顺序表插入(在第i号元素前插入一个新的元素)
int ListInsert(SqList *L, int i, ElemType e)
{
int j;
if (i < 1 || i > L->length + 1 || L->length >= MaxSize) // 插入位置小于第一个元素或者插入位置大于最后一个元素+1或者顺序表已经大于最大容量了
{
return 0;
}
for (j = L->length - 1; j >= i - 1; j--)
{
L->data[j + 1] = L->data[j];
}
L->data[i - 1] = e;
L->length++;
return 1;
}
// 顺序表删除
int ListDelete(SqList *L, int i)
{
int j;
if (i < 1 || i > L->length)
return 0;
for (j = i; j < L->length; j++)
L->data[j - 1] = L->data[j];
L->length--;
return 1;
}
int main()
{
SqList myList; // 声明一个名为 myList 的变量,其类型为 SqList,即顺序表类型。
InitList(&myList);
// 输入元素
printf("请输入元素值,以空格分隔:");
for (int i = 0; i < MaxSize; i++)
{
if (scanf("%d", &myList.data[i]) == 1)
{
break;
}
myList.length++;
}
// 输出顺序表中的各元素值
printf("顺序表中的元素值为:");
for (int i = 0; i < myList.length; i++)
{
printf("%d ", myList.data[i]);
}
printf("\n");
// 在第3个位置插入67
if (ListInsert(&myList, 3, 67))
printf("在第3个位置插入67成功\n");
else
printf("在第3个位置插入67失败\n");
// 在第9个位置插入10
if (ListInsert(&myList, 9, 10))
printf("在第9个位置插入10成功\n");
else
printf("在第9个位置插入10失败\n");
// 输出插入后的顺序表中的各元素值
printf("插入后的顺序表中的元素值为:");
for (int i = 0; i < myList.length; i++)
{
printf("%d ", myList.data[i]);
}
printf("\n");
// 删除第6个数据元素
if (ListDelete(&myList, 6))
printf("删除第6个数据元素成功\n");
else
printf("删除第6个数据元素失败\n");
// 删除第8个数据元素
if (ListDelete(&myList, 8))
printf("删除第8个数据元素成功\n");
else
printf("删除第8个数据元素失败\n");
// 输出删除后的顺序表中的各元素值
printf("删除后的顺序表中的元素值为:");
for (int i = 0; i < myList.length; i++)
{
printf("%d ", myList.data[i]);
}
printf("\n");
system("pause");
return 0;
}
|