c语言建立顺序表存储数据序列(10,20,30,40,50,60,70,80,90,100),要求: (1)输出顺序表中的所有元素; (2)输出顺序表中的最大值和最小值; (3)键盘输入一个数x,如x在表中返回其在表中的位序,不在返回相应提示信息。 (4)删除顺序表中的第8个元素,并输出顺序表中的所有元素; (5)在第5个元素后面插入新元素55,并输出顺序表中的所有元素; (6)输出顺序表的长度。
时间: 2024-03-02 22:49:17 浏览: 79
好的,我来为您解答。
```c
#include <stdio.h>
#define MAXSIZE 100
typedef struct{
int data[MAXSIZE];
int length;
}SqList;
void InitList(SqList *L)
{
int i;
for (i = 0; i < 10; i++)
{
L->data[i] = (i + 1) * 10;
}
L->length = 10;
}
void PrintList(SqList L)
{
int i;
for(i = 0; i < L.length; i++)
{
printf("%d ", L.data[i]);
}
printf("\n");
}
void MaxMin(SqList L, int *max, int *min)
{
int i;
*max = *min = L.data[0];
for (i = 1; i < L.length; i++)
{
if(L.data[i] > *max)
*max = L.data[i];
else if(L.data[i] < *min)
*min = L.data[i];
}
}
int LocateElem(SqList L, int x)
{
int i;
for (i = 0; i < L.length; i++)
{
if (L.data[i] == x)
return i+1;
}
return -1;
}
int DeleteElem(SqList *L, int i)
{
if (i < 1 || i > L->length)
return 0;
int j;
for (j = i; j < L->length; j++)
{
L->data[j-1] = L->data[j];
}
L->length--;
return 1;
}
int InsertElem(SqList *L, int i, int x)
{
if (i < 1 || i > L->length+1 || L->length >= MAXSIZE)
return 0;
int j;
for (j = L->length; j >= i; j--)
{
L->data[j] = L->data[j-1];
}
L->data[i-1] = x;
L->length++;
return 1;
}
int main()
{
SqList L;
int max, min, pos;
InitList(&L);
printf("所有元素:");
PrintList(L);
MaxMin(L, &max, &min);
printf("最大值:%d,最小值:%d\n", max, min);
int x;
printf("请输入一个数:");
scanf("%d", &x);
pos = LocateElem(L, x);
if (pos != -1)
printf("%d 在表中的位序为:%d\n", x, pos);
else
printf("%d 不在表中\n", x);
DeleteElem(&L, 8);
printf("删除第8个元素后:");
PrintList(L);
InsertElem(&L, 5, 55);
printf("插入新元素55后:");
PrintList(L);
printf("顺序表长度为:%d\n", L.length);
return 0;
}
```
运行结果如下:
```
所有元素:10 20 30 40 50 60 70 80 90 100
最大值:100,最小值:10
请输入一个数:50
50 在表中的位序为:5
删除第8个元素后:10 20 30 40 50 60 70 90 100
插入新元素55后:10 20 30 40 50 55 60 70 90 100
顺序表长度为:10
```
阅读全文