-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path2024.4.26.test.c
106 lines (106 loc) · 2.33 KB
/
2024.4.26.test.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 //线性表允许的最大长度
typedef int elemtype;
typedef struct //定义线性表的结构
{
elemtype data[MAXSIZE]; //表示线性表(a1,a2,….,an)
int length; //length表示线性表的实际长度
}SeqList;
/* 线性表初始化:InitSeqList()
初始条件:表L不存在;
操作结果:构造一个空的线性表 */
SeqList* InitSeqList()
{
SeqList* L;
L = (SeqList*)malloc(sizeof(SeqList));
if (!L)
return NULL;
else
{
L->length = 0;
return L;
}
}
/* 线性表赋值:AssignSeqList(L)
初始条件:表L不存在数据
操作结果:构造一个具体指定数值的线性表 */
void AssignSeqList(SeqList* L)
{
int i;
printf("请输入元素个数:\n");
scanf("%d", &L->length);
printf("按照元素个数依次输入元素值:\n");
for (i = 0; i < L->length; i++)
scanf("%d", &L->data[i]);
}
/* 线性表输出:OutputSeqList(L)
初始条件:表L存在
操作结果:输出线性表中的所有数据 */
void OutputSeqList(SeqList* L)
{
int i;
printf("顺序表的长度是%d\n", L->length);
if (L->length != 0)
{
printf("顺序表的元素依次是:");
for (i = 0; i < L->length; i++)
printf("%4d", L->data[i]);
}
else
{
printf("当前顺序表为空!");
}
printf("\n");
}
/* 插入操作:InsertSeqList(L,i,x)
初始条件:线性表L存在且未满,插入位置正确 (1<=i<=原表长+1)。
操作结果:在线性表L的第 i 个位置(下标为 i-1)上插入一个值为 x 的新元素,这样使原下标为 i-1, i,i+1, ... , L->length-1 的数据元素的下标变为 i,i+1, ... , L->length,插入后表长=原表长+1,若插入成功返回1,否则返回-1。 */
int InsertSeqList(SeqList* L, int i, elemtype x)
{
// 请在这里补充代码,完成本关任务
/********** Begin *********/
if (L->length == MAXSIZE)
{
return 0;
}
int j = 0;
L->length++;
for (j = L->length; j >= i; j--)
{
L->data[j] = L->data[j - 1];
if (j == i)
{
L->data[j] = x;
break;
}
}
return 1;
/********** End **********/
}
int main() {
SeqList* L;
int i, x, k;
L = InitSeqList();
if (L == NULL)
printf("初始化顺序表失败!\n");
else
{
AssignSeqList(L);
OutputSeqList(L);
printf("请输入插入位置:\n");
scanf("%d", &i);
printf("请输入插入数据:\n");
scanf("%d", &x);
k = InsertSeqList(L, i, x);
if (k == 1)
{
printf("插入操作成功!插入元素后顺序表如下\n");
OutputSeqList(L);
}
else
printf("插入操作失败\n");
}
return 0;
}