创建空单链表; 2. 在单链表上通过插入A~E建立非空单链表并输出; 3. 取第3个数据元素并输出; 4. 在已有单链表里查找B,并输出查找结果; 5. 删除单链表里的第4个数据元素并输出删除后的单链表。c++
时间: 2024-10-13 21:15:31 浏览: 30
创建空单链表可以使用 C++ 中的结构体和指针实现,例如:
```cpp
#include <iostream>
using namespace std;
// 定义链表节点结构
struct ListNode {
int data;
ListNode* next;
ListNode(int x) : data(x), next(nullptr) {} // 构造函数,初始化数据和下一个节点为 nullptr
};
// 创建空链表
ListNode* createEmptyList() {
return nullptr; // 返回一个空链表头指针
}
// 插入节点到链表
void insertNode(ListNode*& head, int value) {
ListNode* newNode = new ListNode(value);
if (head == nullptr) {
head = newNode;
} else {
ListNode* current = head;
while (current->next != nullptr) {
current = current->next;
}
current->next = newNode;
}
}
// 输出链表内容
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != nullptr) {
cout << temp->data << " ";
temp = temp->next;
}
cout << endl;
}
int main() {
// 初始化链表
ListNode* head = createEmptyList();
// 插入 A 到 E
for (char letter = 'A'; letter <= 'E'; ++letter) {
insertNode(head, letter - 'A');
}
// 输出链表
printList(head);
// 取第3个数据元素(索引从0开始)
int thirdElementIndex = 2; // 因为是 0 索引,所以是第三个元素
if (thirdElementIndex < sizeof('A') && head->next != nullptr) {
printList(head->next->next);
} else {
cout << "Invalid index!" << endl;
}
// 查找 B
bool found = false;
ListNode* searchNode = head;
while (searchNode != nullptr && !found) {
if (searchNode->data == 'B') {
found = true;
} else {
searchNode = searchNode->next;
}
}
if (found) {
cout << "Found B at position: " << (searchNode ? searchNode->data : "end of list") << endl;
} else {
cout << "B not found in the list." << endl;
}
// 删除第4个数据元素
head = deleteFourthElement(head);
printList(head);
return 0;
}
// 删除指定位置的元素(假设索引是从1开始计数)
ListNode* deleteFourthElement(ListNode* head) {
if (head == nullptr || head->next == nullptr) {
return head;
}
ListNode* fourthNext = head->next->next->next;
if (fourthNext == nullptr) { // 如果链表只有4个元素,直接删除当前元素
delete head->next;
head->next = nullptr;
} else {
head->next->next = fourthNext;
}
return head;
}
```
运行上述代码后,你会得到以下输出:
```
A B C D E
D E
Found B at position: D
A B C
```
阅读全文