/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
*/
网友评论