A: p != NULL
B: !empty( )
C: p!= NULL || !empty()
D: p!= NULL && !empty()
举一反三
- 以下程序是二叉链表树中序遍历的非递归算法,请填空使之完善。二叉树链表的结点类型的定义如下:typedef struct node /*C语言/{char data; struct node *lchild,*rchild;}*bitree;void vst(bitree bt) /*bt为根结点的指针*/{ bitree p; p=bt; initstack(s); /*初始化栈s为空栈*/while(p || !empty(s)) /*栈s不为空*/if(p) { push (s,p);____; } /*P入栈*/else { p=pop(s); printf(“%c”,p->;data); ____; } /*栈顶元素出栈*/}
- 以下程序是二叉链表树中序遍历的非递归算法,请填空使之完成(注意:语句中不要留空格)。二叉树链表的结点类型的定义如下: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; }}
- 二叉树的存储结构为: structBTreeNode{ElemTypedata;BTreeNode* lchild;BTreeNode* rchild;};请写出其非递归的中序遍历算法voidInOrderWithoutRecursion(BTreeNode* root) {if (root == NULL) return;BTNode* p = root;stack<BTNode*> s;while (!s.empty() || p) {//入栈中,左子树的左子树在入栈while (p) {_________________;__________________;}if (!s.empty()){//当p为空时,说明根和左子树都遍历完,该进入右子树 ________________;cout<< ”“<< p->data; _________________;}}cout<<endl;}
- 二叉树中序遍历的非递归算法如下所示。请填写算法中下划线的空白处。[br][/br]Status Inorder(BiTree T){[br][/br] InitStack(s);push(s,T); While ( (1)){[br][/br] While (gettop(s,p)&&p) push (s, (2)); pop(s,p); if(!StackEmpty(s)){ pop(s,p);printf( (3)); push(s, (4));[br][/br] }//if[br][/br] }//while[br][/br] return ok;[br][/br]}//Inorder[br][/br]注:[br][/br]InitStack(s);初始化一个栈s;[br][/br]push(s,p);将所指向的结点进s栈[br][/br];pop(s,p);s栈顶元素出栈;[br][/br]gettop(s,p);取s栈顶元素;[br][/br]StackEmpty(s);判栈s是否为空。
- 下面的程序段,实现对一棵二叉树的先根遍历。 public void preorder(BinaryNode p) // 先根次序遍历以p结点为根的子树,递归方法 { if (p != null) // 若二叉树不空 { System.out.print(p.data.toString() + " "); // 根先访问 ; // 遍历p的左子树,递归调用 ; // 遍历p的右子树,递归调用 } }
内容
- 0
中国大学MOOC: 下列程序的运行结果是 。 #include<iostream>using namespace std;char *fun(char *str, char c){ while ( *str!=’\0’) if(*str==c) return (str); else str++; return (NULL);}void main(){ char s [80] = “warrior”, *p; p=fun(s, ‘r’); if(p) cout<<p<<endl;p=fun(s, ‘i’); if(p) cout<<p<<endl;p=fun(s, ‘b’); if(p) cout<<p<<endl;}
- 1
对一不带头结点的链栈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;
- 2
电子组态1s2p所构成的原子态为( )。 A: 1s2p1S0,1s2p1P1, 1s2p3S1 1s2p3P2,1,0 B: 1s2p1S0,1s2p1P1 C: 1s2p1S0,1s2p3S1 D: 1s2p1P1,1s2p3P2,1,0
- 3
试判断原子态:1s1s3S1,1s2p3P2,1s2p1D1,2s2p3P2中,下面哪组是存在的? A: 1s1s3S1,1s2p3P2; B: 1s2p3P2,1s2p1D1; C: 1s2p3P2,2s2p3P2; D: 1s1s3S1,1s2p1D1;
- 4
在一个单链表中,若P指针所指结点不是最后结点,在P之后插入S指针所指的结点,则应该执行的语句序列是() A: S—>link=P;P—>link=S; B: S—>link=P—>link;P—>link=S; C: S—>link=P—>link;P=S; D: P—>link=S;S—:>link=P;