已知sq是带头结点的非空单链表,且*p结点既不是第一个结点,也不是最后一个结点,则
①删除*p结点的直接后继结点的语句序列。
②删除*p结点的直接前驱结点的语句序列。
③删除*p结点的语句序列。
④删除第一个结点的语句序列。
⑤删除最后一个结点的语句序列。
已知3个带头结点的线性链表A、线性链表B和线性链表C中的结点均依元素值自小至大非递减排列(可能存在两个以上值相同的结点),编写算法对链表A进行如下操作:使操作后的链表A中仅留下3个表中均包含的数据元素的结点,且没有值相同的结点,并释放所有无用结点。限定算法的时间复杂度为D(m+n+p),其中m、n和p分别为3个表的长度。
以下程序中函数fun()的功能是构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单向链表中所有结点中的字符串。请填空完成函数disp。
include <atdio.h> typedef struct node /*链表结点结构*/ { char sub[3]; struct node * next; } Node Node ~un(char s) /*建立链表*/ {......} void disp(Node * h) { Node * Ps p=h->next; while(【 】) { printf("%s\n",p->suh);p= 【 】;} } main() { Node * hd; hd = fun(); disp(hd) ;prinff(" \n" );
在带头结点的链队列中,队头指针指向链表的()。【北京理工大学2007一、4(1分)】
A.最后一个元素结点
B.第一个元素结点
C.头结点
D.都不是
单链表
实验目的:
(1)熟练掌握线性表的单链式存储结构及在其上实现线性表的各种基本运算的方法。
(2)掌握和理解本实验中出现的一些基本的C语言语句。
(3)体会算法在程序设计中的重要性。
实验内容:
(1)设计一算法,逆置带头结点的动态单链表head。要求利用原表的结点空间,并要求用尽可能少的时间完成。
(2)设有两个按元素值递增有序的单链表A和B,编一程序将A表和B表归并成一个新的递增有序的单链表C(值相同的元素均保留在C表中),并要求利用原表的空间存放C。
已知head指向一个带头结点的单向链表,链表中每个结点包含数据域(data)和指针域(next),数据域为整型。以下函数求出链表中所有链结点数据域的和值,作为函数值返回。请在下划线内填入正确内容。 { int data;struct link*next; } main() { struct link*head; ┆ sum(head); ┆} sum(【 】); { struct link*p;int s=0; p=head->next; while(p){s+=p->data;p=p->next;} return(s);}
带头结点的单链表head为空的判断条件是__________。
A.head=NULL
B.head一>next=NULL
C.head一>next=head
D.head!=NULL
不带头结点的单链表head为空的判定条件是______。
A.head=NULL
B.head一>next=NULL
C.head一>next=head
D.head!=NULL