使用链表实现线性表的基本操作,包括:初始化、建立、取值、查找、插入、删除等,C/C++脚本,可编译运行,包含main函数和各子函数
时间: 2024-10-16 21:13:28 浏览: 45
在C/C++中,我们可以使用结构体定义链表节点,并编写一系列函数来处理线性表的操作。下面是一个简单的示例,展示了如何实现链表的基本操作:
```cpp
#include <iostream>
// 链表节点结构体
struct Node {
int data; // 节点数据
Node* next; // 指向下一个节点的指针
};
// 初始化一个空链表
Node* createList() {
return nullptr;
}
// 初始化新节点并添加到链表尾部
Node* insert(Node* head, int value) {
if (!head) {
head = new Node{value, nullptr};
} else {
Node* newNode = new Node{value, nullptr};
newNode->next = head;
head = newNode;
}
return head;
}
// 取值操作:返回头节点的数据
int getValue(Node* head) {
if (head != nullptr) {
return head->data;
} else {
std::cout << "链表为空!" << std::endl;
return -1;
}
}
// 查找操作:如果找到节点,返回true;未找到返回false
bool search(Node* head, int key) {
Node* current = head;
while (current != nullptr) {
if (current->data == key) {
return true;
}
current = current->next;
}
return false;
}
// 删除操作:删除第一个匹配的节点(如果存在)
void deleteNode(Node** head, int key) {
if (*head == nullptr) {
return;
}
if ((*head)->data == key) {
Node* temp = *head;
*head = (*head)->next;
delete temp;
return;
}
Node* prev = *head;
Node* current = *head->next;
while (current != nullptr && current->data != key) {
prev = current;
current = current->next;
}
if (current != nullptr) {
prev->next = current->next;
delete current;
}
}
// 主函数
int main() {
Node* listHead = createList();
// 插入操作示例
listHead = insert(listHead, 5);
listHead = insert(listHead, 10);
listHead = insert(listHead, 15);
// 打印初始链表
std::cout << "Initial List: ";
printList(listHead);
// 查找和删除操作示例
int valueToFind = 10;
if (search(listHead, valueToFind)) {
std::cout << "Found " << valueToFind << " in the list." << std::endl;
} else {
std::cout << "Value not found." << std::endl;
}
deleteNode(&listHead, valueToFind);
std::cout << "After deletion: ";
printList(listHead);
return 0;
}
// 辅助函数:打印链表
void printList(Node* head) {
while (head != nullptr) {
std::cout << head->data << " -> ";
head = head->next;
}
std::cout << "nullptr" << std::endl;
}
```
这个程序包含了链表的基础操作,包括初始化、插入、取值、查找和删除。注意,为了简单起见,这里并没有处理所有可能出现的边界情况。在实际项目中,还需要考虑错误处理和内存管理。运行此代码前,请确保已经安装了C++编译器,并按照需要进行编译和运行。
阅读全文