假设双链表结点的类型如下: Typedef struct linknode {int data; /*数据域*/ struct linknode *llink; /*llink是指向前驱结点的指针域*/ struct linknode *rlink; /*rlink是指向后续结点的指针域*/ }bnode 下面给出的算法段是要把一个q所指的新结点作为非空双向链表中的p所指结点的前驱结点插入到该双链表中,能正确完成要求的算法段是(32)。
A.q->rlink=p;q->llink=p->llink;p->llink=q;p->llink->rlink=q;
B.p->llink=q;q->rlink=p;p->llink->rlink=q:q->llink=p->llink;
C.q->llink=p->llink:q->rlink=p;p->llink->rlink=q;p->llink=q;
D.以上都不对
第1题:
2、某带头结点的非空单链表L中所有元素为整数,结点类型定义如下: typedef struct node { int data; struct node *next; } LinkNode; 设计一个尽可能高效的算法,将所有小于零的结点移到所有大于等于零的结点的前面。
第2题:
已知单链表L的元素依次为L=(1,2,3,4,5)。请问下述函数作用在L上,返回值是 ElemType fun(LinkNode *L) {LinkNode *p=L->next, *q=p; while(p->next!=NULL && p->next->next!=NULL) { p=p->next->next; q=q->next;} return q->data; }
A.1
B.2
C.3
D.4
第3题:
试编写在带头结点的单链表中删除最小值结点的算法,假设结点的指针域为next,数据域为data。 void Delete(LinkList *L){}
第4题:
设计题1: 1.某带头结点的非空单链表L中所有元素为整数,结点类型定义如下: typedef struct node { int data; struct node *next; } LinkNode; 设计一个尽可能高效的算法,实现将第1个结点和第2个结点交换。 【不要求写出完整程序,只写出实现所要求的算法即可】
第5题:
1、有两个递增有序表,所有元素为整数,均采用带头结点的单链表存储,结点类型定义如下: typedef struct node { int data; struct node *next; } LinkNode; 设计一个尽可能高效的算法,将两个递增有序单链表ha、hb合并为一个递减有序单链表hc,要求算法空间复杂度为O(1)。