第九章 链表——数据存储更灵活:当我们在学习数组的时候,会不会有这样的困惑:当我们向数组中插入一个数据,或者从数组中删除一个数据的时候,往往需要移动该位置后面的所有的数据,牵一发而动全身。那么有没有什么好的解决方法呢?--单向链表链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。单向链表的每一个节点中,不仅保存着该节点的数据,更重要的是保存着该节点的下一个节点的位置,这样我们就可以通过修改下一节点位置方式来实现节点的插入和删除。 那么在下面的课程中,我们学习单向链表的定义和创建,以及如何向单向链表中插入和删除节点。9.1单向链表的定义与创建:单向链表的每一个节点都包含着两个部分,一部分是数据,一部分是指针。我们可以采用结构体的方式定义链表的节点。在本节中,我们详细的讲述了链表每一个节点的结构,以及如何利用结构体来定义一个链表节点。另外,我们还介绍和创建单向链表的方式以及几种情况:原链表为空表时和原链表不为空表时。最后还介绍了单向链表的查找方式--单向链表的搜索。
9.2单向链表的删除和插入:我们在上一小节当中,学习了单向链表的基本知识,掌握了如何创建一个单向链表,以及如何遍历这个单向链表;那么这一小节中,我们学习一下,单向链表的另外的两个重要操作--插入和删除。对于单向链表节点的插入和删除,不同节点位置他们的操作是不同的,有哪几种情况呢?我们在本小节当中,详细的介绍了在头结点之前插入或删除一个节点;在单向链表的尾部插入或删除一个节点,以及在单向链表的中间插入或删除一个节点。那么接下来就让我们看看这些是如何进行的吧。
[单选题]在一个以 h 为头的单向链表中,p 指针指向链尾的条件是()。

选项:[p->next->next=h, p->next=h, p->.data=-1, p->next=NULL]
[单选题]在一个单链表head中,若要在指针p所指结点后插入一个q指针所指结点,则执行()。

选项:[q->next=p->next; p=q;, q->next=p->next; p->next=q;, p->next=q->next; p->next=q;, p->next=q->next; q->next=p;]
[单选题]在单链表指针为p的结点之后插入指针为s的结点,正确的操作是()。

选项:[p->next=s;s->next=p->next;
, p->next=s;p->next=s->next;, p->next=s->next;p->next=s;, s->next=p->next;p->next=s;]
[单选题]在一个单链表head中,若要删除指针p所指结点的后继结点,则执行()。

选项:[q=p->next; p->next=q->next; free(q);, p->next=p->next->next; free(p);, p=p->next;free(p);, q= p->next q->next=p->next; free(q);]
[单选题]

若已建立下面的链表结构,指针p、q分别指向图中所示结点,则不能将q所指结点插入到链表末尾的语句是( )。

1.jpg

选项:[p=p->next; q->next=p->next; p->next=q;, q->next=NULL; p=p->next; p->next=q;, p=p->next; q->next=p; p->next=q;, p=(*p).next; (*q).next=(*p).next; (*p).next=q;]

温馨提示支付 ¥1.00 元后可查看付费内容,请先翻页预览!
点赞(0) dxwkbang
返回
顶部