建网站科技公司,上海公司牌照申请流程,建设网站职业证书,网站广告位怎么做感觉上是可以轻松完成的#xff0c;因为对链接的结构#xff0c;元素的删除过程心里明镜似的 实际上四处跑气 结构体的初始化好像完全忘掉了#xff0c;用malloc折腾半天#xff0c;忘记了用new#xff0c;真想扇自己嘴巴子到飞起删除后写一个函数#xff0c;把链表打印… 感觉上是可以轻松完成的因为对链接的结构元素的删除过程心里明镜似的 实际上四处跑气 结构体的初始化好像完全忘掉了用malloc折腾半天忘记了用new真想扇自己嘴巴子到飞起删除后写一个函数把链表打印出来对于有些数据始终报段错误后来发现是removeElements函数的返回值没有重新给头指针赋值导致还指向已被删除的空间 现在这些知识点自己还是有些基础的但完全手生到跟没学一样啊 #include iostreamstruct ListNode {int val 0;ListNode* next;ListNode(): val(0), next(nullptr) {}ListNode(int v): val(v), next(nullptr) {}ListNode(int v, ListNode* _next): val(v), next(_next) {}
};class Solution {
public:ListNode* removeElements(ListNode* head, int val) {if (head nullptr) return nullptr;auto* visualHead new ListNode(0);visualHead-next head;for (auto *p visualHead; p-next ! nullptr;) {if (p-next-val val) {auto* temp p-next;p-next p-next-next;delete temp;} else p p-next;}head visualHead-next;delete visualHead;return head;}void show(ListNode* head) {for (auto* p head; p ! nullptr; p p-next)std::cout p-val ;std::cout std::endl;}
};int main()
{int del_val;std::cin del_val;ListNode* p nullptr;for (int val; std::cin val; p new ListNode(val, p));std::cout del_val std::endl;Solution s;p s.removeElements(p, del_val);s.show(p);return 0;
}
// 执行后输入5 5 5 3 2 5 5 1 a
// 第一个5表示要删除的值最后一个a表示输入结束一开始会反向生成链表1-5-5-2-3-5-5-5然后再把5的结点删除测试代码耗时至少二个小时 在测试时发现对链接的边界处的值设定与安排还是一头雾水思想深刻度与对链表更精深的理解还不到位 当天其它题目设计链表 当天其它题目反转链表 汇总