- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Write the code fragment that appropriately deletes the node pointed to by
p
(data value 14) in the doubly linked list.
我想我知道如何做到这一点:
(1) 使右侧节点的previous
元素指向左侧节点
(2) 使左边的节点next
元素指向右边的节点
(3) 将p
指向的节点元素设为NULL并删除。
但是我忘记了如何在代码中编写它(已经有一段时间了)。我在想它会是这样的(我假设 node 是一个结构,它包含一个 int 数据、node* next 和 node* previous):
node* x = p->next;
node* y = p->previous;
x->previous = y;
y->next = x;
p->previous = nullptr;
p->next = nullptr;
delete p;
x->previous = y;
写代码片段在14和16之间插入一个节点(同图):
node *x = p->next;
node y;
y->previous = x->previous;
y->next = p->next;
x->previous = y;
p->next = y;
这样可以吗?
最佳答案
删码就差不多好了。但是,请注意一些事情:
left
应该是 previous
)。p
的字段设置为 nullptr,无论如何您都将删除它。x->previous = y
将使这个“循环”不是你想要的!这将是一个更好的近似值:
node *x = p->next;
node *y = p->previous;
x->previous = y;
y->next = x;
delete p;
但是,这有一个警告:如果列表是单例会怎样?也就是说,您只有 p
?。请注意 p->next
和 p->previous
都将为 NULL
,因此分配给 x
y
会报错! (请注意,作为第一个或最后一个元素将导致相同的问题,只是在某些方面)。
代码的第二部分有点问题:
y
是一个变量,您正在通过 y->
取消引用它。这是一个只能对指针进行的操作[1]。这个问题实际上更深刻,因为 y
被放置在堆栈中,一旦离开范围就会被删除,因此如果您要这样做,您将在链表中得到未定义的行为使用 &y
获取指针。y->previous = x->previous;
可以简化为y->previous = p
y->y->next = p->next;
可以简化为y->next = x
通过这些更正,这将变成:
node *y = new node();
y->previous = p;
y->next = p->next;
p->next->previous = y;
p->next = y;
但是请注意,这又一次不能处理 p
指向列表末尾的情况! (p->next->previous = y
会发生什么?),因此您应该更正它。另外,p
指向列表的开头而不是结尾有关系吗?你应该处理那个吗?
唯一的实际问题是动态内存的问题,其余的更正只是“可读性”更正。尽管“可读性”是个人喜好,但您应该始终尝试使代码尽可能清晰。
[1] 除非你真的在使用 operator->()
重载,我假设你没有。
关于c++ - 双向链表 : Properly deleting an adding something in the middle of a list?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37036734/
我在一个 anchor 内有一个内联 block 元素(跨度),它的高度为 40 像素。我尝试将 span 垂直居中,但它的位置更可能靠近底部。它不在中间。我怎样才能真正垂直居中该跨度? JSFidd
在我的 HTML 中,我有一个 div,它有三个 div 作为子元素。我想让第二个和第三个 child (分别是文本和按钮)居中对齐。 Some Text
当使用浏览器网络检查器时,我遇到了 CSS 属性 vertical-align 的两个不同的非标准属性。 -webkit-baseline-middle 仅在 Chrome 中可用,而 -moz-mi
下面的方法不会编译: public K test(K a, K b) { return a.test(); //a.test() returns Middle } 如果我们将K设置为
我有三列,中间列有一个按钮,我想在中间垂直对齐。 Cli
试图解决要求的家庭作业问题:更改姓名,以便姓在前。示例:“Mary Jane Lee”将返回“Lee, Mary Jane”。如果名称中没有空格,则原样返回。 经过一些研究,我似乎可以使用 Split
我需要使用 IE11 在 SVG 中完美地居中文本元素。 预期结果(所有 Evergreen 浏览器): IE11 结果: //SVG 代码: 1 Codepen 最佳答案
我有一个结构数组,这些结构基本上是形成一条边的两个点。由于性能,我使用结构。 现在我有对象 A 保存边缘和这个对象中的一个方法来告诉另一个对象 B 关于这个边缘数组中的连续边缘列表。 边缘: e0 e
我试图将两个链接垂直对齐到 Logo 的两边中间,但它似乎不起作用。此外,我想让它成为一个响应式导航,两个链接都以 Accordion 下拉方式显示在 Logo 下方。我一直在到处寻找解决方案,但找不
据我所知,vertical-align: middle; CSS 属性仅适用于 display 选项设置为 的元素表格单元格。 那么为什么 vertical-align 在 button 元素上被接受
我有两个值 v1 和 v2,分别是 T1 和 T2 类型,sizeof(T1)>sizeof(T2)。两种类型都是普通旧数据。现在,我想用 v2 的字节替换 v1 的第 k、k+1、... k+siz
直播:http://jsfiddle.net/8hAv3/ #main { width: 100px; height: 100px; background-color: red
jsFiddle:http://jsfiddle.net/2CRZP/ 我想使用 vertical-align:middle 或其他东西 (CSS) 将灰色框放在屏幕中间。
表格和表格单元格不起作用。我将表格的高度设置为 100% 并将表格单元格设置为自动。然后我尝试将 table-cell 设置为 vertical-align middle 100% 宽度但不起作用。我
我正在尝试编写一个函数来 找到图片的高度 执行计算(200px - 图片高度) 为每个不同的缩略图添加一个 css 样式(.imgk{margin-top:"calculated value";})。
我想将 img 元素放在 div.partners-slider 的中间。这是一个响应式 slider ,我无法设置固定高度。有什么建议吗? jsfiddle HTML
我试图将此文本区域的标签对齐到文本框的中间,但它不起作用。输出看起来像这样: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx
在下面的测试用例中,替代文本水平居中,但它固定在框的顶部。我如何在中间获取它? 最佳答案 表格的一个优点是它们提供跨浏览器的垂直居中。 DIV 没有。
我正在为本质上是一个 n 层协作应用程序(不是企业级,只是一个具有显着增长潜力的小型项目)开发一种新架构,我已经在尝试训练自己使用 IoC,并且在某种程度上, TDD,而且我想知道,一般来说,手动编写
我有一个想法,但不知道是否可以这样做: 是否可以编写一个 USB 摄像头驱动程序,该驱动程序可以将视频源多路复用到任何需要它的软件? 一种“中间人”司机:) 最佳答案 如果需要 Linux 驱动程序,
我是一名优秀的程序员,十分优秀!