编写一个程序,根据从标准输入接收的指令来维护和操作排序的链表。链表是按顺 序维护的,这意味着链表中的数据在每次操作后都以递增的数字顺序存储。 请注意,在创建新节点时,需要使用malloc为它们分配空间;一旦不再需要任何已 分配的空间,就应该使用free将其释放。还要注意,链表不包含重复的值。 2.2【基本要求】 链表支持两种操作指令。 插入n:向链表中添加一个整数n。如果链表中已经存在n,则它什么也不做。指令 格式是一个i后跟一个空格和一个整数n。 删除n:从链表中删除一个整数n。如果链表中不存在n,它什么也不做。指令格式 是d后跟一个空格和一个整数n。 在每个命令之后,程序将输出链表的长度,然后是链表的内容,按照从第一个(最 小)到最后一个(最大)的顺序。 输入格式:输入的每一行都包含一条指令。每行都以一个字母(或者是“i”或者是 “d”)开头,后跟一个空格,然后是一个整数。以“i”开头的一行表示该整数应该插 入链表中。以“d”开头的一行表示应从链表中删除该整数。输入i和d以外的字符程序 结束运行。 输出格式:执行每个指令后,程序将输出一行文本,其中包含链表的长度、一个冒 号以及按顺序排列的链表元素,所有内容都用空格分隔。 程序运行操作示例:(i或d开头的行是输入行,其他是输出行) i 5 1: 5 d 3 1: 5 i 3 2: 3 5 i 500 3: 3 5 500 d 5 2: 3 500
时间: 2024-03-27 12:41:08 浏览: 14
下面是一个C语言的示例程序,可以根据输入的指令来维护和操作排序的链表:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int value;
struct node* next;
} Node;
Node* head = NULL;
int length = 0;
void insert(int n) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->value = n;
newNode->next = NULL;
if (head == NULL) {
head = newNode;
} else {
Node* cur = head;
Node* prev = NULL;
while (cur != NULL && cur->value < n) {
prev = cur;
cur = cur->next;
}
if (cur == NULL || cur->value > n) {
newNode->next = cur;
if (prev == NULL) {
head = newNode;
} else {
prev->next = newNode;
}
} else {
free(newNode);
}
}
length++;
}
void delete(int n) {
Node* cur = head;
Node* prev = NULL;
while (cur != NULL && cur->value < n) {
prev = cur;
cur = cur->next;
}
if (cur != NULL && cur->value == n) {
if (prev == NULL) {
head = cur->next;
} else {
prev->next = cur->next;
}
free(cur);
length--;
}
}
void printList() {
printf("%d:", length);
Node* cur = head;
while (cur != NULL) {
printf(" %d", cur->value);
cur = cur->next;
}
printf("\n");
}
int main() {
char cmd;
int n;
while (scanf("%c %d", &cmd, &n) == 2) {
getchar(); // 吃掉输入中的换行符
if (cmd == 'i') {
insert(n);
} else if (cmd == 'd') {
delete(n);
} else {
break; // 输入非法指令,退出程序
}
printList();
}
return 0;
}
```
该程序使用了链表的插入和删除操作来维护排序的链表,同时在每次操作后输出链表的长度和内容。需要注意的是,该程序使用了动态内存分配来创建和释放节点,因此需要在不需要节点时及时释放内存,否则可能会造成内存泄漏。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)