用c++语言设计程序创建一个单向链表,并输出链表中数据。要求:从键盘输入元素的值,并在此基础上实现元素插入、删除及按值查找的功能。
时间: 2024-02-15 14:02:34 浏览: 66
C语言实现单向链表的创建、插入,删除节点,和2个链表合并
5星 · 资源好评率100%
好的,下面是用C++语言实现单向链表的代码,代码中实现了创建链表、输出链表、插入元素、删除元素、按值查找元素等功能。
```c++
#include <iostream>
using namespace std;
// 定义链表节点结构体
struct Node {
int data;
Node* next;
};
// 创建链表
Node* create_list()
{
Node *head = NULL, *tail = NULL;
int data;
cout << "请输入链表元素,以-1结束:" << endl;
while (1) {
cin >> data;
if (data == -1) break;
Node *new_node = new Node();
new_node->data = data;
new_node->next = NULL;
if (head == NULL) {
head = tail = new_node;
} else {
tail->next = new_node;
tail = new_node;
}
}
return head;
}
// 输出链表
void print_list(Node* head)
{
cout << "链表中的元素为:";
while (head) {
cout << head->data << " ";
head = head->next;
}
cout << endl;
}
// 插入元素
void insert_element(Node* head, int value)
{
Node* new_node = new Node();
new_node->data = value;
new_node->next = head->next;
head->next = new_node;
}
// 删除元素
void delete_element(Node* head, int value)
{
Node* p = head, *pre = NULL;
while (p) {
if (p->data == value) {
if (pre == NULL) {
head = p->next;
} else {
pre->next = p->next;
}
delete p;
break;
}
pre = p;
p = p->next;
}
}
// 按值查找元素
void search_element(Node* head, int value)
{
Node* p = head;
int index = 0;
while (p) {
index++;
if (p->data == value) {
cout << "元素" << index << "的值为" << value << endl;
return;
}
p = p->next;
}
cout << "链表中不存在值为" << value << "的元素" << endl;
}
int main()
{
Node* head = create_list();
print_list(head);
// 插入元素
int insert_value;
cout << "请输入要插入的元素的值:";
cin >> insert_value;
insert_element(head, insert_value);
print_list(head);
// 删除元素
int delete_value;
cout << "请输入要删除的元素的值:";
cin >> delete_value;
delete_element(head, delete_value);
print_list(head);
// 按值查找元素
int search_value;
cout << "请输入要查找的元素的值:";
cin >> search_value;
search_element(head, search_value);
return 0;
}
```
以上是用C++语言实现单向链表的代码,您可以根据需要进行修改和完善。
阅读全文