2. 以“工具设计者”角色,给出“链式线性表”的创建 Create、显示 Display、插入 Insert、删除 Delete、合并 Merge 接口函数程序代码
时间: 2023-06-14 07:03:57 浏览: 82
链式线性表是一种数据结构,由多个节点(Node)组成,每个节点存储着数据元素和指向下一个节点的指针。下面是链式线性表的五个基本操作接口函数程序代码。
1. Create 函数用于创建链式线性表,它会返回链表的头节点指针。
```C++
Node* Create() {
Node* head = new Node();
head->next = nullptr;
return head;
}
```
2. Display 函数用于显示链式线性表中存储的元素。
```C++
void Display(Node* head) {
Node* p = head->next;
while (p != nullptr) {
std::cout << p->data << " ";
p = p->next;
}
std::cout << std::endl;
}
```
3. Insert 函数用于在链式线性表中插入一个元素,它需要一个位置参数 pos 和一个数据元素参数 value,表示将 value 插入到链表的第 pos 个位置上。
```C++
bool Insert(Node* head, int pos, int value) {
Node* p = head;
int i = 0;
while (p != nullptr && i < pos - 1) {
p = p->next;
i++;
}
if (p == nullptr || i > pos - 1) {
return false;
}
Node* new_node = new Node();
new_node->data = value;
new_node->next = p->next;
p->next = new_node;
return true;
}
```
4. Delete 函数用于在链式线性表中删除一个元素,它需要一个位置参数 pos,表示将链表的第 pos 个元素删除。
```C++
bool Delete(Node* head, int pos) {
Node* p = head;
int i = 0;
while (p != nullptr && i < pos - 1) {
p = p->next;
i++;
}
if (p == nullptr || p->next == nullptr || i > pos - 1) {
return false;
}
Node* q = p->next;
p->next = q->next;
delete q;
return true;
}
```
5. Merge 函数用于合并两个链式线性表,它需要两个链表的头节点指针作为参数,返回合并后的链表的头节点指针。
```C++
Node* Merge(Node* head1, Node* head2) {
Node* p = head1->next;
Node* q = head2->next;
Node* new_head = new Node();
Node* r = new_head;
while (p != nullptr && q != nullptr) {
if (p->data < q->data) {
r->next = p;
p = p->next;
} else {
r->next = q;
q = q->next;
}
r = r->next;
}
r->next = p == nullptr ? q : p;
return new_head;
}
```
阅读全文