• 2022-06-16
    以下程序是二叉链表树中序遍历的非递归算法,请填空使之完成(注意:语句中不要留空格)。二叉树链表的结点类型的定义如下:typedef struct node { char data; struct node *lchild,*rchild;}*bitree;void visit(bitree bt) /*bt为根结点的指针*/ {bitree p; p=bt; initstack(s); /*初始化栈s为空栈*/ while( p || !empty(s)) /*栈s不为空*/ if(p) { push (s,p);/* p 入栈*/ (1)______; } else { p=pop(s);/*栈顶元素出栈*/ printf(“%c”,p->data); p=p->rchild; }}
  • p=p->lchild

    举一反三

    内容

    • 0

      对一不带头结点的链栈S,若元素e(其结点由指针p指向)入栈,则正确的操作为( )。 A: S=p->;next;p=S; B: p->;next=S->;next;p=S; C: S=p;p->;next=S; D: p->;next=S;S=p;

    • 1

      1、已知带头结点的链栈top, 则该链栈不空时, 出栈操作的语句是( ) A: top->next=top->next->next; *x=top->next->data; B: top->next=top->next->next; *x=top->next->data; C: *x=top ->data;p=top;top =p->next;free(p); D: *x=top ->data;p=top;top =p->next;free(p);

    • 2

      若已建立以下链表结构,指针p、s分别指向如图所示结点 [img=370x83]17d60d9449e27ba.png[/img]则不能将s所指向结点插入到链表末尾的语句是() A: p=p->next;s->next=p;p->next=s; B: p=(*p).next;(*s).next=(*p).next;(*p).next=s; C: p=p->next;s->next=p->next;p->next=s; D: s->next='';p=p->next;p->next=s;

    • 3

      若已建立以下链表结构,指针p、s分别指向如图所示结点 [img=370x83]17d60d9449e27ba.png[/img]则不能将s所指向结点插入到链表末尾的语句是() A: p=p->next;s->next=p;p->next=s; B: p=(*p).next;(*s).next=(*p).next;(*p).next=s; C: p=p->next;s->next=p->next;p->next=s; D: s->next='';p=p->next;p->next=s;

    • 4

      在一个长度大于2的单循环链表L中,P指针指向某结点,在P前插入S结点,要求在O(1)时间复杂度内完成,以下正确的是( )。 A: s->next=p->next;p->next=s; //将s结点插入到p之后t=s->data;s->data=p->data;p->data; //s结点和p结点的值互换 B: q=p->next;while(q->next!=p) q=q->next;s->next=p; q->next=s; C: q=p->next;while(q->next!=p) q=q->next;q->next=s; s->next=p; D: 在p结点前插入s结点,而且要求在O(1)内,无法实现。