• 2021-04-14
    下面是用c语言编写的对不带头结点的单链表进行就地逆置的算法,该算法用L返回逆置后的链表的头指针,试在空缺处填入适当的语句。 void reverse(linklist &L){ p=NULL;q=L; while(q!=null) { (1) ; q->next=p; p=q; (2) ___ ; } ( 3) _____; }
  • (1):L=L->next; (2):q=L; (3):L=p;

    举一反三

    内容

    • 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;