设计程序创建一个单向链表,并输出链表中数据。要求:从键盘输入元素的值,并在此基础上实现元素插入、删除及按值查找的功能。输出代码
时间: 2024-02-12 14:03:51 浏览: 68
以下是一个简单的 C++ 实现,实现了单向链表的创建、插入、删除和按值查找功能。具体实现细节可以根据需求进行调整。
```c++
#include <iostream>
using namespace std;
// 定义单向链表节点结构体
struct Node {
int data;
Node* next;
};
// 创建单向链表
Node* createList() {
Node* head = new Node;
head->next = NULL;
Node* p = head;
int x;
cout << "请输入节点值,输入-1结束输入:" << endl;
while (true) {
cin >> x;
if (x == -1) {
break;
}
Node* node = new Node;
node->data = x;
node->next = NULL;
p->next = node;
p = p->next;
}
return head;
}
// 插入节点
void insertNode(Node* head, int value) {
Node* p = head;
while (p->next != NULL) {
p = p->next;
}
Node* node = new Node;
node->data = value;
node->next = NULL;
p->next = node;
cout << "插入节点 " << value << " 成功" << endl;
}
// 删除节点
void deleteNode(Node* head, int value) {
Node* p = head->next;
Node* pre = head;
while (p != NULL && p->data != value) {
pre = p;
p = p->next;
}
if (p == NULL) {
cout << "未找到节点 " << value << endl;
} else {
pre->next = p->next;
delete p;
cout << "删除节点 " << value << " 成功" << endl;
}
}
// 按值查找节点
void findNode(Node* head, int value) {
Node* p = head->next;
int index = 1;
while (p != NULL && p->data != value) {
p = p->next;
index++;
}
if (p == NULL) {
cout << "未找到节点 " << value << endl;
} else {
cout << "找到节点 " << value << ",位置为 " << index << endl;
}
}
// 输出链表
void printList(Node* head) {
Node* p = head->next;
cout << "链表中的节点值为:" << endl;
while (p != NULL) {
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
int main() {
// 创建链表
Node* head = createList();
// 输出链表
printList(head);
// 插入节点
insertNode(head, 5);
// 输出链表
printList(head);
// 删除节点
deleteNode(head, 3);
// 输出链表
printList(head);
// 查找节点
findNode(head, 2);
return 0;
}
```
运行程序,可以按照提示进行节点的创建、插入、删除和查找操作。
阅读全文