c语言在创建单链表时需带有头结点,既可以顺序构建也可以逆序构建,但单链表的长度和其中的结点元素必须是任意输入的。对创建的两个单链表和归并后的单链表在主函数中分别进行输出。
时间: 2024-10-22 15:30:19 浏览: 31
在C语言中,创建带头结点的单链表通常会涉及到动态内存分配和结构体的使用。以下是创建链表、顺序构建、逆序构建以及合并链表的基本步骤:
1. 定义链表节点结构:
```c
typedef struct ListNode {
int data; // 数据域
struct ListNode* next; // 指针域,指向下一个节点
} ListNode;
```
2. 动态创建节点并初始化:
```c
ListNode* createNode(int data) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->data = data;
newNode->next = NULL;
return newNode;
}
```
3. 顺序创建链表:
```c
void appendForward(ListNode** head, int data) {
if (*head == NULL) {
*head = createNode(data);
} else {
ListNode* lastNode = *head;
while (lastNode->next != NULL) {
lastNode = lastNode->next;
}
lastNode->next = createNode(data);
}
}
```
4. 逆序创建链表:
```c
void appendReverse(ListNode** head, int data) {
if (*head == NULL) {
*head = createNode(data);
} else {
ListNode* firstNode = *head;
ListNode* newHead = createNode(data);
newHead->next = *head;
*head = newHead;
while (firstNode->prev != NULL) {
firstNode = firstNode->prev;
}
firstNode->prev = newHead;
}
}
```
5. 展示链表:
```c
void displayList(ListNode* head) {
ListNode* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
```
6. 主函数中的操作:
```c
int main() {
ListNode* forwardList = NULL;
ListNode* reverseList = NULL;
// 输入链表长度和元素
int n, element;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &element);
appendForward(&forwardList, element); // 顺序插入
appendReverse(&reverseList, element); // 逆序插入
}
// 输出链表
printf("顺序链表: ");
displayList(forwardList);
printf("逆序链表: ");
displayList(reverseList);
// 合并链表并输出
ListNode* mergedList = forwardList;
if (reverseList != NULL) {
mergedList = reverseMergeLists(forwardList, reverseList);
displayList(mergedList);
}
// 清理内存
free(forwardList);
free(reverseList);
if (mergedList != NULL) {
free(mergedList);
}
return 0;
}
```
`reverseMergeLists` 函数用于合并两个已排序的链表,这里假设逆序链表已经是一个前驱链表,可以直接将其追加到顺序链表的末尾。
注意:这个例子假设用户输入的数据是合法的,实际应用中需要加入错误处理,比如检查输入是否有效以及内存释放等。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![ppt](https://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20250102104920.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.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://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)