设计程序创建一个单向链表,并输出链表中数据。要求:从键盘输入元素的值,并在此基础上实现元素插入、删除及按值查找的功能。输出代码
时间: 2024-02-15 10:03:58 浏览: 84
以下是一个简单的单向链表的实现,包括元素插入、删除和按值查找功能:
```cpp
#include <iostream>
using namespace std;
// 链表节点结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
class LinkedList {
private:
ListNode* head; // 头节点指针
public:
LinkedList() {
head = new ListNode(0); // 创建头节点
}
// 插入元素
void insert(int val) {
ListNode* p = head;
while (p->next != NULL) {
p = p->next;
}
ListNode* node = new ListNode(val);
p->next = node;
}
// 删除元素
void remove(int val) {
ListNode* p = head;
while (p->next != NULL) {
if (p->next->val == val) {
ListNode* q = p->next;
p->next = q->next;
delete q;
return;
}
p = p->next;
}
}
// 按值查找元素
bool find(int val) {
ListNode* p = head->next;
while (p != NULL) {
if (p->val == val) {
return true;
}
p = p->next;
}
return false;
}
// 输出链表
void print() {
ListNode* p = head->next;
while (p != NULL) {
cout << p->val << " ";
p = p->next;
}
cout << endl;
}
};
int main() {
LinkedList list;
// 从键盘输入元素的值,插入到链表中
cout << "请输入元素的值,以-1结束:" << endl;
int val;
cin >> val;
while (val != -1) {
list.insert(val);
cin >> val;
}
// 输出链表
cout << "链表中的元素为:" << endl;
list.print();
// 按值查找元素
cout << "请输入要查找的元素的值:" << endl;
cin >> val;
if (list.find(val)) {
cout << "元素 " << val << " 存在于链表中。" << endl;
} else {
cout << "元素 " << val << " 不存在于链表中。" << endl;
}
// 删除元素
cout << "请输入要删除的元素的值:" << endl;
cin >> val;
list.remove(val);
// 输出链表
cout << "删除元素后链表中的元素为:" << endl;
list.print();
return 0;
}
```
在这个程序中,我们创建了一个 `LinkedList` 类来实现单向链表的各种操作。在 `main()` 函数中,我们从键盘输入元素的值,并插入到链表中;然后输出链表中的元素,按值查找元素,删除元素,最后再次输出链表中的元素。
阅读全文