链表
#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;
}
全部评论
相关推荐

点赞 评论 收藏
分享
07-08 12:20
郑州大学 材料工程师 码农索隆:看我帖子https://www.nowcoder.com/discuss/764127692135370752,神州信息那个2B董成杰,我离职的时候,直接干他干了一仗
点赞 评论 收藏
分享