用c➕➕编写建立一个长度为n的单链表。 (2) 删除单链表中元素值最小的结点(假设这样的结点唯一)。(3) 删除单链表中元素值最大的结点(假设这样的结点唯一)。
时间: 2024-10-09 15:01:49 浏览: 22
JAVA单链表的简单操作(递增单链表插入数据,链表逆置,链表逆序合成)
在C++中创建一个长度为`n`的单链表,首先需要定义链表节点结构体以及相关的函数。以下是基本步骤:
1. 定义链表节点结构:
```cpp
struct ListNode {
int val; // 节点值
ListNode* next; // 指向下一个节点的指针
ListNode(int x) : val(x), next(nullptr) {} // 构造函数
};
```
2. 创建链表函数:
```cpp
ListNode* createLinkedList(int n) {
if (n <= 0) return nullptr;
ListNode* head = new ListNode(0); // 初始化头节点
ListNode* current = head;
for (int i = 1; i < n; ++i) {
current->next = new ListNode(i);
current = current->next;
}
return head;
}
```
删除元素值最小的节点(假设唯一),可以遍历整个链表,找到第一个节点然后删除它:
```cpp
void deleteMinNode(ListNode*& head) {
if (head == nullptr || head->next == nullptr) return;
ListNode* temp = head;
while (temp->next != nullptr && temp->val >= temp->next->val) {
temp = temp->next;
}
if (temp->next != nullptr) {
head = temp->next;
} else {
delete temp;
}
}
```
删除元素值最大的节点(同样假设唯一),你可以采用类似的方法,遍历链表并保存最大值的节点,最后删除它:
```cpp
void deleteMaxNode(ListNode*& head) {
if (head == nullptr) return;
ListNode* maxNode = head;
ListNode* current = head->next;
while (current != nullptr) {
if (current->val > maxNode->val) {
maxNode = current;
}
current = current->next;
}
if (maxNode != head) {
ListNode* temp = head;
while (temp->next != maxNode) {
temp = temp->next;
}
temp->next = maxNode->next;
delete maxNode;
}
}
```
阅读全文