c语言合并两个线性表
时间: 2024-10-17 11:03:05 浏览: 6
在C语言中,合并两个线性表通常是将它们链接在一起形成一个新的线性表。这里我们可以用链表数据结构来演示这个过程,因为链表的性质非常适合动态添加元素。假设我们有两个单向链表,分别表示为`list1`和`list2`。
首先,我们需要定义一个节点结构体(如`ListNode`),包含一个数据域和指向下一个节点的指针:
```c
typedef struct ListNode {
int data;
struct ListNode* next;
} ListNode;
```
然后,我们可以创建一个函数来合并这两个链表:
```c
ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
// 如果其中一个列表为空,则直接返回另一个列表
if (!list1) return list2;
if (!list2) return list1;
// 定义新的头节点和临时指针
ListNode* head = NULL;
ListNode* temp = list1;
// 当两个列表都有元素时,比较并选择较小的值作为新链表的节点
while (list1 && list2) {
if (list1->data <= list2->data) {
temp->next = list1;
list1 = list1->next;
} else {
temp->next = list2;
list2 = list2->next;
}
temp = temp->next;
}
// 将剩余的部分添加到新链表的末尾
if (list1) temp->next = list1;
if (list2) temp->next = list2;
// 返回新链表的头节点
return head;
}
```
在这个函数中,我们遍历了两个链表,每次都选择当前最小的数据添加到新链表,并更新指针。最后返回合并后的链表的头节点。
阅读全文