编写程序建立一个单向链表。链表结点中的数据为从键盘输入的一个字符串,但要求将该串字符按由小到大的顺序组织在链表中。
时间: 2023-04-22 10:04:28 浏览: 368
可以按照以下步骤编写程序建立一个单向链表:
1. 定义链表结点的结构体,包括数据域和指针域。
2. 定义一个指向链表头结点的指针,并初始化为 NULL。
3. 从键盘输入一个字符串,将其按照从小到大的顺序插入到链表中。
4. 插入时,从链表头开始遍历,找到第一个比插入元素大的结点,将插入元素插入到该结点之前。
5. 如果链表为空或插入元素比链表中所有元素都小,则将插入元素作为链表的头结点。
6. 遍历链表,输出链表中的所有元素。
下面是一个简单的示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 链表结点的结构体
typedef struct node {
char data[100]; // 数据域
struct node *next; // 指针域
} Node;
int main() {
Node *head = NULL; // 指向链表头结点的指针
// 从键盘输入一个字符串
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
// 将字符串按照从小到大的顺序插入到链表中
Node *p = head;
Node *prev = NULL;
while (p != NULL && strcmp(str, p->data) > ) {
prev = p;
p = p->next;
}
Node *newNode = (Node *)malloc(sizeof(Node));
strcpy(newNode->data, str);
newNode->next = p;
if (prev == NULL) {
head = newNode;
} else {
prev->next = newNode;
}
// 遍历链表,输出所有元素
printf("链表中的元素为:");
p = head;
while (p != NULL) {
printf("%s ", p->data);
p = p->next;
}
printf("\n");
return ;
}
```
阅读全文