数据结构练习

发布 2021-05-29 15:28:28 阅读 7536

以下仅供参考。

1、顺序表的操作将偶数调整到顺序表的后端。

#include <>

void fun1(int r,int n)

int x=r[0];

int low=0,high=n;

while (low

r[low]=x;

void main()

int a[7]=,i;

fun1(a,7);

printf("");

for (i=0;i<7;i++)

printf("%d",a[i]);

getch();

如:上述数组初值为:1 2 3 4 5 6 7

输出为:7 5 3 1 4 6 2

2、二叉树建立 &&遍历 &&深度

树形打印(逆时针旋转90度)

求叶子结点的算法请参照上学期实践时的参考资料。

#include<>

#include <>

#include <>

typedef int datatype;

typedef struct node

datatype data;

struct node *lchild;

struct node *rchild;

bitnode,*bittree;

void creatbitree(bittree *bt)//用扩展先序遍历序列创建二叉树,如果是#当前树根置为空,否则申请一个新节点//

char ch;

char a;

ch=getchar();

a=getchar();

if(ch=='bt=null;

else*bt=(bittree)malloc(sizeof(bitnode));

(*bt)->data=ch;

creatbitree(&(bt)->lchild));

creatbitree(&(bt)->rchild));

void visit(char ch)//访问根节点。

printf("%c ",ch);

void preorder(bittree root) /先序遍历二叉树, root为指向二叉树(或某一子树)根结点的指针*/

if (root!=null)

visit(root ->data); 访问根结点*/

preorder(root ->lchild); 先序遍历左子树*/

preorder(root ->rchild); 先序遍历右子树*/

void inorder(bittree root)

*中序遍历二叉树, root为指向二叉树(或某一子树)根结点的指针*/

if (root!=null)

inorder(root ->lchild); 中序遍历左子树*/

visit(root ->data); 访问根结点*/

inorder(root ->rchild); 中序遍历右子树*/

void postorder(bittree root)

* 后序遍历二叉树,root为指向二叉树(或某一子树)根结点的指针*/

if(root!=null)

postorder(root ->lchild); 后序遍历左子树*/

postorder(root ->rchild); 后序遍历右子树*/

visit(root ->data); 访问根结点*/

int posttreedepth(bittree bt) /后序遍历求二叉树的高度递归算法//

int hl,hr,max;

if(bt!=null)

hl=posttreedepth(bt->lchild); 求左子树的深度

hr=posttreedepth(bt->rchild); 求右子树的深度

max=hl>hr?hl:hr; /得到左、右子树深度较大者。

return(max+1); 返回树的深度。

else return(0); 如果是空树,则返回0

void printtree(bittree boot,int nlayer) /按竖向树状打印的二叉树

int i; /将树状图逆时针旋转90度的图。

if(boot==null) return;

printtree(boot->rchild,nlayer+1);

for(i=0;idata);

printtree(boot->lchild,nlayer+1);

void main()

bittree t;

int h;

int layer;

int treeleaf;

layer=0;

printf("请输入二叉树中的元素(以扩展先序遍历序列输入,其中*代表空子树):");

creatbitree(&t);

printf("先序遍历序列为:")

preorder(t);

printf("中序遍历序列为:")

inorder(t);

printf("后序遍历序列为:")

postorder(t);

h=posttreedepth(t);

printf("树的深度为:%d",h);

printtree(t,layer);

数据结构练习

一 选择题 1 若长度为n的线性表采用顺序存储结构,删除它的第i数据元素之前,需要先依次向前移动 个数据元素。a 2.在单链表中,已知q指的结点是p指的结点的直接前驱结点,若在q和p指的结点之间插入一个由s指的结点,则需执行b a.q next p s next p b.s next p q nex...

数据结构练习

第1章。1.从逻辑上可以把数据结构分为。a 动态结构 静态结构 b 顺序结构 链式结构。c.线性结构 非线性结构 d 初等结构 构造型结构。2.关于算法的描述,不正确的是。a.算法最终必须由计算机程序实现。b 所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界。c.健壮的算法不会因非法的输人数...

数据结构练习

一 选择题。1 广度优先遍历的含义是 从图中某个顶点v出发,在访问了v之后依次访问v的各个未被访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,且 先被访问的顶点的邻接点 先于 后被访问的顶点的邻接点 被访问,直至图中所有已被访问的顶点的邻接点都被访问到是下图的广度优先遍历序列。a.1 ...