2. 以“工具设计者”角色,给出“链式线性表”的创建 Create、显示 Display、插入 Insert、删除 Delete、合并 Merge 接口函数,
时间: 2023-06-12 11:04:36 浏览: 82
好的,作为“工具设计者”,我可以为你提供以下链式线性表的接口函数:
### 1. Create
```c++
// 创建链式线性表
void CreateList(ListNode*& head, int arr[], int n)
{
head = new ListNode(arr[0]); // 创建头结点
ListNode* p = head;
for (int i = 1; i < n; i++) {
ListNode* node = new ListNode(arr[i]); // 创建新结点
p->next = node; // 将新结点插入链表
p = node; // 将指针指向新结点
}
}
```
### 2. Display
```c++
// 显示链式线性表
void DisplayList(ListNode* head)
{
ListNode* p = head;
while (p != nullptr) {
cout << p->val << " ";
p = p->next;
}
cout << endl;
}
```
### 3. Insert
```c++
// 插入结点
bool InsertNode(ListNode*& head, int val, int pos)
{
if (pos < 1) {
return false;
}
ListNode* p = head;
for (int i = 1; i < pos - 1 && p != nullptr; i++) {
p = p->next;
}
if (p == nullptr) {
return false;
}
ListNode* node = new ListNode(val);
node->next = p->next;
p->next = node;
return true;
}
```
### 4. Delete
```c++
// 删除结点
bool DeleteNode(ListNode*& head, int pos)
{
if (pos < 1) {
return false;
}
ListNode* p = head;
ListNode* q = nullptr;
for (int i = 1; i < pos && p != nullptr; i++) {
q = p;
p = p->next;
}
if (p == nullptr) {
return false;
}
if (q == nullptr) {
head = p->next;
} else {
q->next = p->next;
}
delete p;
return true;
}
```
### 5. Merge
```c++
// 合并链式线性表
ListNode* MergeLists(ListNode* l1, ListNode* l2)
{
ListNode* head = new ListNode(0);
ListNode* p = head;
while (l1 != nullptr && l2 != nullptr) {
if (l1->val < l2->val) {
p->next = l1;
l1 = l1->next;
} else {
p->next = l2;
l2 = l2->next;
}
p = p->next;
}
if (l1 != nullptr) {
p->next = l1;
}
if (l2 != nullptr) {
p->next = l2;
}
return head->next;
}
```
以上是链式线性表的创建、显示、插入、删除和合并接口函数的实现,你可以根据需要进行调用。
阅读全文
相关推荐


















