用C语言建立一个顺序表,用键盘输入该顺序表的值并打印
时间: 2024-03-25 16:37:14 浏览: 79
好的,以下是示例代码:
```c
#include <stdio.h>
#define MAX_SIZE 100 // 定义顺序表最大长度
typedef struct {
int data[MAX_SIZE]; // 存储数据的数组
int length; // 当前长度
} SeqList;
int main() {
SeqList list;
int i, n;
// 初始化顺序表
list.length = 0;
// 获取输入的元素个数
printf("请输入元素个数:");
scanf("%d", &n);
// 获取输入的元素值,插入到顺序表中
printf("请输入%d个元素值:\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &list.data[i]);
list.length++;
}
// 打印顺序表
printf("顺序表的值为:");
for (i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
return 0;
}
```
运行程序后,会先要求输入顺序表的元素个数,再要求输入每个元素的值,最后打印出顺序表的值。
相关问题
用c语言建立顺序表从键盘输入整数添加插入和删除元素并打印
好的,我可以为您解答这个问题。首先,我们需要定义一个顺序表的数据结构,包括表头指针、当前表长和表的最大长度:
```c
#define MAXSIZE 100 // 最大长度
typedef struct {
int data[MAXSIZE]; // 存放元素的数组
int length; // 当前表长
} SqList; // 顺序表类型定义
```
接下来,我们可以实现向表中添加元素的函数 `ListInsert`:
```c
int ListInsert(SqList *L, int i, int e) {
if (i < 1 || i > L->length + 1) { // 判断 i 的合法性
return 0;
}
if (L->length >= MAXSIZE) { // 判断表是否已满
return 0;
}
for (int j = L->length; j >= i; j--) { // 将 i 及其后面的元素后移
L->data[j] = L->data[j - 1];
}
L->data[i - 1] = e; // 将元素 e 插入到位置 i
L->length++; // 表长加 1
return 1;
}
```
接着,我们可以实现从表中删除元素的函数 `ListDelete`:
```c
int ListDelete(SqList *L, int i, int *e) {
if (i < 1 || i > L->length) { // 判断 i 的合法性
return 0;
}
*e = L->data[i - 1]; // 将要删除的元素赋值给 e
for (int j = i; j < L->length; j++) { // 将 i 及其后面的元素前移
L->data[j - 1] = L->data[j];
}
L->length--; // 表长减 1
return 1;
}
```
最后,我们可以实现打印表中所有元素的函数 `PrintList`:
```c
void PrintList(SqList L) {
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
```
下面是一个完整的程序示例,可以通过键盘输入整数来添加、插入和删除元素,并打印表中所有元素:
```c
#include <stdio.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
int ListInsert(SqList *L, int i, int e) {
if (i < 1 || i > L->length + 1) {
return 0;
}
if (L->length >= MAXSIZE) {
return 0;
}
for (int j = L->length; j >= i; j--) {
L->data[j] = L->data[j - 1];
}
L->data[i - 1] = e;
L->length++;
return 1;
}
int ListDelete(SqList *L, int i, int *e) {
if (i < 1 || i > L->length) {
return 0;
}
*e = L->data[i - 1];
for (int j = i; j < L->length; j++) {
L->data[j - 1] = L->data[j];
}
L->length--;
return 1;
}
void PrintList(SqList L) {
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SqList L;
L.length = 0;
int op, i, e;
while (1) {
printf("请选择操作:1.添加元素 2.插入元素 3.删除元素 4.打印元素 0.退出\n");
scanf("%d", &op);
switch (op) {
case 1:
printf("请输入要添加的元素:");
scanf("%d", &e);
ListInsert(&L, L.length + 1, e);
break;
case 2:
printf("请输入要插入的位置和元素:");
scanf("%d %d", &i, &e);
ListInsert(&L, i, e);
break;
case 3:
printf("请输入要删除的位置:");
scanf("%d", &i);
ListDelete(&L, i, &e);
printf("删除的元素为:%d\n", e);
break;
case 4:
printf("当前元素为:");
PrintList(L);
break;
case 0:
return 0;
default:
printf("输入错误,请重新输入!\n");
}
}
return 0;
}
```
希望能帮到您!
用c语言创建一个顺序表,并从键盘接收数字输入,将输入的正整教按从小到大的顺序插入顺序表,并在输入负整数的时候将其绝对值数据删除。每次输入后,将顺序表的内容打印到屏幕上,
在C语言中,顺序表通常可以通过数组来实现。下面是一个简单的C语言程序,用于创建一个顺序表,接收用户输入的数字,并按照要求插入、删除和打印顺序表的内容。
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 定义顺序表的最大长度
// 顺序表的结构体定义
typedef struct {
int data[MAX_SIZE]; // 存储顺序表的数组
int length; // 顺序表当前长度
} SeqList;
// 初始化顺序表
void InitList(SeqList *list) {
list->length = 0;
}
// 向顺序表中插入元素
void InsertList(SeqList *list, int element) {
if (list->length >= MAX_SIZE) {
printf("顺序表已满,无法插入。\n");
return;
}
int i;
for (i = list->length - 1; (i >= 0) && (list->data[i] > element); i--) {
list->data[i + 1] = list->data[i]; // 向后移动元素
}
list->data[i + 1] = element;
list->length++;
}
// 删除顺序表中的元素(以绝对值为键)
void DeleteList(SeqList *list, int element) {
int i, found = 0;
for (i = 0; i < list->length; i++) {
if (abs(list->data[i]) == abs(element)) {
found = 1;
break;
}
}
if (found) {
for (; i < list->length - 1; i++) {
list->data[i] = list->data[i + 1]; // 向前移动元素
}
list->length--;
}
}
// 打印顺序表
void PrintList(SeqList *list) {
for (int i = 0; i < list->length; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
int main() {
SeqList list;
int number;
InitList(&list); // 初始化顺序表
printf("请输入一系列整数(输入负数结束):\n");
while (1) {
scanf("%d", &number);
if (number < 0) {
DeleteList(&list, number);
PrintList(&list);
break;
} else {
InsertList(&list, number);
PrintList(&list);
}
}
return 0;
}
```
该程序首先定义了一个顺序表的结构体`SeqList`,包含一个数组用于存储数据和一个整数用于记录顺序表的当前长度。接下来定义了几个函数,用于初始化顺序表、插入元素、删除元素和打印顺序表。在`main`函数中,程序循环接收用户输入的数字,如果是正数则插入顺序表,如果是负数则根据绝对值删除顺序表中的对应元素,并在每次操作后打印顺序表的内容。当用户输入一个负数时,程序会结束输入并退出。
阅读全文