)首先创建一个顺序表:从键盘读入一组整数(长度小于等于20),按输入顺序放入顺序表,输入以-1结束(注意-1不放到顺序表内);将创建好的顺序表元素依次输出到屏幕上。 2)在已创建好的顺序表中插入一个元素:从键盘读入需插入的元素值和插入位置,调用插入函数完成插入操作;然后将顺序表元素依次输出到屏幕上。 3)在已创建好的顺序表中删除一个元素:从键盘读入欲删除的元素位置(序号),调用删除函数完成删除操作;然后将顺序表元素依次输出到屏幕上。 提示:相关常量和顺序表数据类型定义 4)在一个已经创建好的顺序表中,删除所有的负数。用C语言实现
时间: 2024-02-22 18:58:57 浏览: 72
好的,这是一个关于顺序表的问题,我可以为您提供一份C语言代码,实现以下功能:
1. 创建一个顺序表,并按输入顺序放入元素,以-1结束;
2. 插入一个元素到指定位置;
3. 删除指定位置的元素;
4. 删除所有负数。
以下是代码实现:
```c
#include <stdio.h>
#define MAXSIZE 20
typedef struct {
int data[MAXSIZE];
int length;
} SeqList;
void InitList(SeqList *L)
{
L->length = 0;
}
void CreateList(SeqList *L)
{
int i, x;
printf("请输入一组整数,长度小于等于20,以-1结束:\n");
for (i = 0; i < MAXSIZE; i++) {
scanf("%d", &x);
if (x == -1) {
break;
}
L->data[i] = x;
L->length++;
}
}
void PrintList(SeqList L)
{
int i;
printf("顺序表中的元素为:\n");
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int InsertList(SeqList *L, int i, int x)
{
int j;
if (i < 1 || i > L->length + 1) {
printf("插入位置非法\n");
return 0;
}
if (L->length == MAXSIZE) {
printf("顺序表已满\n");
return 0;
}
for (j = L->length - 1; j >= i - 1; j--) {
L->data[j + 1] = L->data[j];
}
L->data[i - 1] = x;
L->length++;
return 1;
}
int DeleteList(SeqList *L, int i)
{
int j;
if (i < 1 || i > L->length) {
printf("删除位置非法\n");
return 0;
}
for (j = i; j < L->length; j++) {
L->data[j - 1] = L->data[j];
}
L->length--;
return 1;
}
void DeleteNegative(SeqList *L)
{
int i, j;
for (i = 0, j = 0; i < L->length; i++) {
if (L->data[i] >= 0) {
L->data[j] = L->data[i];
j++;
}
}
L->length = j;
}
int main()
{
SeqList L;
int x, i;
InitList(&L);
CreateList(&L);
PrintList(L);
printf("请输入需要插入的元素和位置:\n");
scanf("%d %d", &x, &i);
if (InsertList(&L, i, x)) {
PrintList(L);
}
printf("请输入需要删除的元素位置:\n");
scanf("%d", &i);
if (DeleteList(&L, i)) {
PrintList(L);
}
DeleteNegative(&L);
PrintList(L);
return 0;
}
```
希望这份代码能够帮助到您!
阅读全文