解析 解答:我们可以使用两个指针,一个指向当前节点,另一个指向当前节点的前一个节点。遍历链表时,判断当前节点的值是否为x,若是,则将当前节点的前一个节点的指针指向当前节点的下一个节点,然后删除当前节点。若不是,则继续遍历下一个节点。最终,遍历完整个链表,就可以删除所有值为x的节点。
解法一:用p从头至尾扫描单链表,pre指向*p结点的前驱。若p所指结点的值为x,则删除,并让p移向下一个结点,否则让pre、p指针同步后移一个结点。 本题代码如下: 纯文本新窗口 1.void Del_X_1(Linklist &L, ElemType x){ 2.//L为带头的单链表,本算法删除L中所有值为x的结点 ...
正文 本段程序实现了:删除带头结点的单链表中所有Data为X的节点,而且跟王道的不一样的是,我只用了一个指针,另外,王道的P037的第一题,我运行了一下,没法跑出来,所以估计有点问题,然后第二题他用了两个指针交替,我就用一个,个人感觉还不错,起码空间复杂度比他的低~~走你 #include<stdio.h>#include<stdlib...
printf("请输入你要删除的元素:"); scanf("%d",&x); delete_x(L,x); printlist(L); return 0;}结果:无反应是什么鬼?心眼观物 彩虹面包 13 如果C++,最简单的就是加个&,传引用void delete_x(LNode *&L,int x) 工地接力 便当 3 顶一下,有没有大神啊 工地...
删除单链表中值为x的元素并输出。。。/* L是带头点的单链表,删除其中所有值为 x 的节点并释放空间。(假设链表中值为 x 的不唯一) 用 p 从头至尾扫描单链表,pre 指向*p节点的前驱,,程序员大本营,技术文章内容聚合第一站。
在带头结点的单链表L中,删除所有值为x的结点,并释放其空间,假设值为x的结点不唯一,试编写算法以实现上述操作。 问题解答: 解法一:用p从头至尾扫描单链表,pre指向*p结点的前驱。若p所指结点的值为x,则删除,并让p移向下一个结点,否则让pre、p指针同步后移一个结点。