链表
#include <iostream>
using namespace std;
// 定义链表结点结构体
struct ListNode {
int data; // 数据
ListNode* next; // 指向下一个结点的指针
};
int main() {
int n;
cin >> n; // 读取数据个数
// 创建头结点
ListNode* head = new ListNode();
head->next = nullptr;
// 当前结点指针,用于插入新结点
ListNode* current = head;
// 建立链表
for (int i = 0; i < n; i++) {
int data;
cin >> data; // 读取数据
// 创建新结点
ListNode* newNode = new ListNode();
newNode->data = data;
newNode->next = nullptr;
// 将新结点插入到链表尾部
current->next = newNode;
current = newNode;
}
int m;
cin >> m; // 读取欲删除的数据
// 删除值为 m 的结点
ListNode* prev = head; // 前驱结点
ListNode* curr = head->next; // 当前结点
while (curr != nullptr) {
if (curr->data == m) {
// 删除当前结点
prev->next = curr->next;
delete curr; // 释放内存
curr = prev->next; // 继续检查下一个结点
} else {
// 移动到下一个结点
prev = curr;
curr = curr->next;
}
}
// 计算删除后的链表长度
int length = 0;
curr = head->next;
while (curr != nullptr) {
length++;
curr = curr->next;
}
// 输出删除后的链表长度
cout << length << endl;
// 输出删除后的链表数据
curr = head->next;
while (curr != nullptr) {
cout << curr->data;
if (curr->next != nullptr) {
cout << " ";
}
curr = curr->next;
}
cout << endl;
// 释放链表内存
curr = head;
while (curr != nullptr) {
ListNode* temp = curr;
curr = curr->next;
delete temp;
}
return 0;
}
        using namespace std;
// 定义链表结点结构体
struct ListNode {
int data; // 数据
ListNode* next; // 指向下一个结点的指针
};
int main() {
int n;
cin >> n; // 读取数据个数
// 创建头结点
ListNode* head = new ListNode();
head->next = nullptr;
// 当前结点指针,用于插入新结点
ListNode* current = head;
// 建立链表
for (int i = 0; i < n; i++) {
int data;
cin >> data; // 读取数据
// 创建新结点
ListNode* newNode = new ListNode();
newNode->data = data;
newNode->next = nullptr;
// 将新结点插入到链表尾部
current->next = newNode;
current = newNode;
}
int m;
cin >> m; // 读取欲删除的数据
// 删除值为 m 的结点
ListNode* prev = head; // 前驱结点
ListNode* curr = head->next; // 当前结点
while (curr != nullptr) {
if (curr->data == m) {
// 删除当前结点
prev->next = curr->next;
delete curr; // 释放内存
curr = prev->next; // 继续检查下一个结点
} else {
// 移动到下一个结点
prev = curr;
curr = curr->next;
}
}
// 计算删除后的链表长度
int length = 0;
curr = head->next;
while (curr != nullptr) {
length++;
curr = curr->next;
}
// 输出删除后的链表长度
cout << length << endl;
// 输出删除后的链表数据
curr = head->next;
while (curr != nullptr) {
cout << curr->data;
if (curr->next != nullptr) {
cout << " ";
}
curr = curr->next;
}
cout << endl;
// 释放链表内存
curr = head;
while (curr != nullptr) {
ListNode* temp = curr;
curr = curr->next;
delete temp;
}
return 0;
}
全部评论 
 相关推荐
09-30 10:14
  华南师范大学 C++  牛客大王八:啊unity ue双通很难得,我估计知道为啥不给转正了,你项目都是unity开发着重点都在unity上结果你ue实习
 投递阿里巴巴灵犀互娱等公司10个岗位
投递阿里巴巴灵犀互娱等公司10个岗位 点赞 评论 收藏   
分享
 09-23 15:49
  蚌埠坦克学院 Java   点赞 评论 收藏   
分享
  科大讯飞公司氛围 425人发布
科大讯飞公司氛围 425人发布