树的关联

2020-03-26  本文已影响0人  木头木脑a

/Link==0,表示指向左或右孩子

//Tread==1,表示指向前驱或后继

typedefenum{Link, Thread} tag;

typedefstructBiThrNode

{

TElemType data;

structBiThrNode *lchild, *rchild;

tag ltag, rtag;

}BiThrNode, *BiThrTree;

//在中序遍历中进行线索化

BiThree pre, Thread;

voidmidThreading(BiThrTree p)

{

if(p)

{

midThreading(p->lchild);//递归线索化左子树

if(!p->lchild)//没有左孩子

{

p->ltag = Thread;//前驱线索

p->lchild = pre;//左孩子指向前驱

}

if(!pre->rchild)//前驱没有右孩子

{

pre->rtag = Thread;//后继线索

pre->rchild = p;//前驱的右孩子指向后继(当前结点)

}

pre = p;

midThreading(p->rchild);//递归线索化右子树

}

}

//百分制-->五分制

if(a<60)

b="不及格";

elseif(a<70)

b="及格";

elseif(a<80)

b="中";

elseif(a<90)

b="良";

else

b="优";

/*

火车调度问题

某铁路局调度火车车厢运送旅客和货物,规则如下:

一组列车只有一个火车头,最多牵引10节车厢;

同类车厢先到先连接,客车厢先于货车厢连接;

每连接4辆客车厢,才允许连接1辆货车厢;

若客车厢不足4辆,则以货车厢代替;

若无货车厢,则全部连接客车厢;

编写代码来模拟火车调度管理,建议使用队列

*/

//设Q为数组表示最大的车厢数

//设Q1为客车厢队列,设Q2为货车厢队列

voidmanager()

{

Queue q;

Queue q1;//客车厢

Queue q2;//货车厢

inti=0;//已连接的客车厢数

intj=0;//车头已经连接多少车厢

while(j<10)

{

if(q1 && i<4)//当客车厢不空,且没有4节时

{

DeQueue(q1, x);//客车厢队列出队,

EnQueue(q, x);//即将其连接到车头

i++;

j++;

}

elseif(i==4 && q2)//客车厢已连接4节,同时还有货车厢在等待连接

{

DeQueue(q2, x);//货车厢出队

EnQueue(q, x);//连接到车头

j++;

i=0;

}

else//没有客车厢或货车厢

{

while(j<10&& i<4&& q2)

{

DeQueue(q2, x);//货车厢出队

EnQueue(q, x);//连接到车头

i++;

j++;

}

i=0;

}

if(!q2 && !q1)

break;//当客车和货车厢不足时,结束

}

}

/*

编码实现:设带头结点L的单链表,从尾到头反向输出每个结点的值

*/

/*

编码实现:设带头结点L的单链表,将链表内容逆序,要求辅助空间复杂度为O(1)

*/

/*

编码实现:设带头结点L的单链表,查找链表中倒数第k个位置上的结点,如果找到输出其data值,找不到输出-1

*/

上一篇下一篇

猜你喜欢

热点阅读