未知长度的顺序表, 采用动态存储结构--顺序表的链式表示
实验目的:1、掌握线性表的基本知识 2、深入理解、掌握并灵活运用线性表。3、熟练掌握线性表的存储结构及主要运算的实现
已知顺序表L递增有序,将X插入到线性表的适当位置上,保证线性表有序。。
输入格式:
第1行输入顺序表长度,第2行输入递增有序的顺序表,第3行输入要插入的数据元素X。
输出格式:
对每一组输入,在一行中输出插入X后的递增的顺序表。
输入样例:
在这里给出一组输入。例如:
5
1 3 5 7 9
6
输出样例:
在这里给出相应的输出。例如:
1,3,5,6,7,9,
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define max 10
typedef struct sqlist* list;
struct sqlist {
int* elem;
int length;
int maxsize;
};
void initlist(list L)
{
L->elem = (int*)malloc(max * sizeof(int));
L->length = 0;
L->maxsize = max;
}
void addlist(list L, int num, int P) {
//L的空间是否充足
if (L->length == L->maxsize) {
L->elem = (int*)realloc(L->elem, (L->length + max) * sizeof(int));
L->maxsize += max;
}
//i及其之后的数字后移
for (int j = L->length + 1; j >= P; j--) {
L->elem[j] = L->elem[j - 1];
}
//插入第i个位置,列表长度+1
L->elem[P] = num;
L->length++;
}
void displayTable(list L) {
for (int i = 0;i < L->length;i++)
{
printf("%d,", L->elem[i]);
}
printf("\n");
}
int main()
{
list L = (list)malloc(sizeof(list));
int i, n, x, j, input, flag;
initlist(L);
scanf("%d", &n);
for (i = 0;i < n;i++)
{
scanf("%d", &x);
L->elem[i] = x;
L->length++;
}
scanf("%d", &input);
for (j = 0;j < n;j++)
{
if (L->elem[j] > input)
{
flag = j;
break;
}
}
printf("list show:\t");
displayTable(L);
printf("%d", flag);
printf("\n");
printf("changlist show:\t");
addlist(L, input, flag);
displayTable(L);
return 0;
}
输出结果 :
自己为了方便调试,书写了部分调试代码,此非最后实际pta答案。