1、设有一组初始记录关键字为(45,80,48,40,22,78),要求构造一棵二叉排序树并给出构造过程。
2、本题要求建立有序的循环链表。从头到尾扫描数组a,取出a[i](0<=ilinkedlist creat(elemtype a,int n)
/由含n个数据的数组a生成循环链表,要求链表有序并且无值重复结点。
linkedlist h;
h=(linkedlist)malloc(sizeof(lnode));申请结点。
h->next=h; /形成空循环链表。
for(i=0;i //查找a[i]的插入位置。
if(p==h ||p->data!=a[i重复数据不再输入。
s=(linkedlist)malloc(sizeof(lnode));
s->data=a[i]; pre->next=s; s->next=p;//将结点s链入链表中。
//forreturn(h);
算法结束。3、设t是给定的一棵二叉树,下面的递归程序count(t)用于求得:二叉树t中具有非空的左,右两个儿子的结点个数n2;只有非空左儿子的个数nl;只有非空右儿子的结点个数nr和叶子结点个数n0。
n2、nl、nr、n0都是全局量,且在调用count(t)之前都置为0.
typedef struct node
int data; struct node *lchild,*rchild;}node;
int n2,nl,nr,n0;
void count(node *t)
if (t->lchild!=null) if (1)__n2++;else nl++;
else if (2)__nr++;else (3)__
if(t->lchild!=null)(4)__if (t->rchild!=null) (5)__
26.树的先序非递归算法。
void example(b)
btree *b;
btree *stack[20], p;
int top;
if (b!=null)
top=1; stack[top]=b;
while (top>0)
p=stack[top]; top--;
printf(“%d”,p->data);
if (p->rchild!=null)
if (p->lchild!=null)
4、设有一组初始记录关键字序列(k1,k2,…,kn),要求设计一个算法能够在o(n)的时间复杂度内将线性表划分成两部分,其中左半部分的每个关键字均小于ki,右半部分的每个关键字均大于等于ki。
void quickpass(int r,int s, int t)
int i=s, j=t, x=r[s];
while(iwhile (ix) j=j-1; if (iwhile (i}
r[i]=x;
2023年浙江省数据概述基础
1 已知有向图g v,e 其中v e 写出g的拓扑排序的结果。g拓扑排序的结果是 v1 v2 v4 v3 v5 v6 v7 2 设一棵树t中边的集合为,要求用孩子兄弟表示法 二叉链表 表示出该树的存储结构并将该树转化成对应的二叉树。3 两棵空二叉树或仅有根结点的二叉树相似 对非空二叉树,可判左右子树...
2019浙江省数据结构 必备
1 设一数列的顺序为1,2,3,4,5,6,通过栈结构不可能排成的顺序数列为 b a 3,2,5,6,4,1 b 1,5,4,6,2,3c 2,4,3,5,1,6 d 4,5,3,6,2,1 2 n个顶点的图的最小生成树必定 d 是不正确的描述。a 不唯一b 权的总和唯一c 不含回路d 有n条边。3...
2019浙江省数据结构基础 必备
1 数据结构中,在逻辑上可以把数据结构分成 b a 动态结构和静态结构b 线性结构和非线性结构。c 紧凑结构和非紧凑结构d 内部结构和外部结构。2 若采用邻接矩阵法存储一个n个顶点的无向图,则该邻接矩阵是一个 d a 上三角矩阵b 稀疏矩阵c 对角矩阵d 对称矩阵。3 在一个单链表中,已知q结点是p...