以下函数creat用来建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾。单向链表的头指
以下程序中函数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" );
已知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);}
A.无头结点的单向链表
B.带头结点的单向链表
C.带头结点的双循环链表
D.带头结点的单循环链表
针对带附加头结点的单链表,试编写下列函数。
(1)定位函数Locate:在单链表中寻找第i个结点。若找到,则函数返回第i个结点的地址;若找不到,则函数返回NULL。
(2)求最大值函数max:通过一趟遍历在单链表中确定值最大的结点,
(3)统计函数number:统计单链表中具有给定值x的所有元素,
(4)建立函数create:根据一维数组aLn]建立一个单链表,使单链表中各元素的次序与a[n]中各元素的次序相同,要求该程序的时间复杂度为O(n)。
(5)整理函数tidyup:在非逆减有序的单链表中删除值相同的多余结点。
在带头结点的链队列中,队头指针指向链表的()。【北京理工大学2007一、4(1分)】
A.最后一个元素结点
B.第一个元素结点
C.头结点
D.都不是
已知sq是带头结点的非空单链表,且*p结点既不是第一个结点,也不是最后一个结点,则
①删除*p结点的直接后继结点的语句序列。
②删除*p结点的直接前驱结点的语句序列。
③删除*p结点的语句序列。
④删除第一个结点的语句序列。
⑤删除最后一个结点的语句序列。