举一反三
- 假设以带头结点的单链表表示线性表,阅读下列算法fun,并回答问题: (1)设线性表为( a1, a2,a3, a4, a5, a6, a7 ),写出执行算法fun后的线性表; (2)简述算法fun的功能。 void fun(LinkList L) {//L为带头结点单链表的头指针 ListNode *p,*q; p =L; while (p&&p->next) { q= p->next; p->next=q->next; p=q->next; free(q); } }
- 对以下代码的功能描述最准确的是()LinkList *Demo(LinkList *L)// L是无头结点的单链表{LinkList *q,*p;if(L!=NULL&&L->;next!=NULL){q=L;L=L->;next;p=L;while (p->;next)p=p->;next;p->;next=q; q->;next=NULL;}return (L);} A: 逆置线性表 B: 当表不空时,删除线性表的首个元素 C: 插入一个新的元素在表尾 D: 当表不空时,把原表的表首元素取下,并插入到表尾。
- 一个单向链表,head指向头结点,每个结点包含数据域data和指针域next。链表按数据域递增有序排列,完成以下函数,使删除链表中数据域值相同的结点。typedefintdatatype;typedefstructnode{datatypedata;structnode*next;}linklist;delete(linklist*head){linklist*p,*q;p=head->next;if(q==NULL)return;p=q->next;while(p!=NULL)if(p->data==q->data){________;free(p);P=q->next;}else{q=q;________}return(s);}
- 若q是某带头结点的单链表的头结点指针,p是第一个结点的指针,则单链表不为空时的判定条件是( )。 A: p != NULL B: q != NULL C: p!= NULL || q != NULL D: p != NULL && q != NULL
- 若q是某带头结点的单链表的头结点指针,p是第一个结点的指针,则单链表不为空时的判定条件是()。 A: p!=NULL B: q!=NULL C: p!=NULL||q!=NULL D: p!=NULL&&q!=NULL
内容
- 0
假设某个单向循环链表的长度大于1,且表中既无头结点也无头指针。已知s为指向链表中某个结点的指针,试编写算法在链表中删除指针s所指结点的前驱结点。 StatusListDelete_CL(LinkList &S) { LinkList p,q; if(S==S->next)return ERROR; q=S; p=S->next; while( ){ q=p; p=p->next; } q->next=p->next;
- 1
假设以带头结点的单链表表示线性表,阅读下列算法fun,并回答问题 设线性表为(a1,a2,a3,a4,a5,a6,a7),写出执行算法fun后的线性表() voidfun(LinkList L) {//L为带头结点单链表的头指针 ListNode*p,*q; p =L; while(p &&p->next) { q = p->next; p->next =q->next; p =q->next; free(q); } } A: a1,a2,a3,a4 B: a2,a4,a6 C: a1,a3,a5,a7 D: a1,a2,a3,a4,a5,a6,a7
- 2
已知不带头结点的单链表L,下面用函数实现的在第一个元素前面插入值为x的元素结点的算法错误的是( ) A: void insert(List *L,elemtype x){ ptr p=*L; node d=new node(x); ptr q=&d; q->next=p; L=&q;} B: List * insert(List *L,elemtype x){ ptr p=*L; node d=new node(x); ptr q=&d; q->next=p; L=&q; return L;} C: void insert(List *L,elemtype x){ ptr p=*L; node d=new node(x); ptr q=&d; p->next=q; L=&q;} D: List * insert(List *L,elemtype x){ ptr p=*L; node d=new node(x); ptr q=&d; q->next=p; return &q;}
- 3
若已建立下面的链表结构,指针p、q分别指向图中所示结点,则不能将q所指结点插入到链表末尾的语句是()。 A: p=p->next;q->next=p->next;p->next=q; B: p=p->next;q->next=p;p->next=q; C: q->next=NULL;p=p->next;p->next=q; D: p=(*p).next;(*q).next=(*p).next;(*p).next=q;
- 4
若已建立下面的链表结构,指针p、q分别指向途中所示结点,则不能将q所指的结点插入到链表末尾的一组语句是( )。[img=424x178]17e44099eef3614.png[/img] A: p=(*p).next;(*q).next=(*p).next;(*p).next=q; B: p=p->;next;q->;next=p->;next;p->;next=q; C: p=p->;next;q->;next=p;p->;next=q; D: q->;next=NULL;p=p->;next;p->;next=q;