• 2022-05-28
    已知不带头结点的单链表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;}
  • C

    举一反三

    内容

    • 0

      将一个由指针p所指向的结点插入到单链表L中由指针q所指向的结点后面,则需要执行的语句为() A: p->next = q->next; q->next = p; B: q->next = p; p->next = q->next; C: p->next = q->next; q = p; D: q->next = p->next; p->next = q;

    • 1

      有以下程序 #include struct NODE {int num; struct NODE *next; } main() {struct NODE *p,*q,*r; p=(struct NODE *)malloc(sizeof(struct NODE)); q=(struct NODE *)malloc(sizeof(struct NODE)); r=(struct NODE *)malloc(sizeof(struct NODE)); p->num=10;q->num=20;r->num=30; p->next=q;q->next=r; printf("%d ",p->num+q->next->num); } 程序运行后的输出结果是( )

    • 2

      (2)intBB(LinkList*L){LinkList*p,*q,*r;p=L->next;if(!p)return0;while(p->next){q=p;while(q->next){if(q->next->data!=p->data)q=q->next;else{r=q->next;q->next=r->next;free(r);}}p=p->next;}}Writethefunctionofthealgorithmabove.(5.0分)

    • 3

      假设以带头结点的单链表表示线性表,阅读下列算法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); } }

    • 4

      在一个表头指针为L的单链表中,若要删除由指针q所指向结点的后继结点(若存在的话),则至少执行 操作。 A: p=q->next; p->next=q->next; B: p=q->next; q->next=p->next; C: p=q->next; q->next=p; D: q->next=q->next->next; q->next=q;