当前位置: 首页 > news >正文

网站建设学习 服务器西安今天刚刚发生的新闻

网站建设学习 服务器,西安今天刚刚发生的新闻,临清住房建设网站,最近时政新闻1 问题 比如我们搜索二叉树如下#xff0c;我们需要变成双向链表 2 分析 我们知道这个变成双向链接的时候是按照树的中序遍历打印的#xff0c;我们只需要在中序遍历打印的时候操作该节点#xff0c;我们可以用临时变量保存这个节点#xff0c;同时我们也需要单独增加一…1 问题 比如我们搜索二叉树如下我们需要变成双向链表   2 分析 我们知道这个变成双向链接的时候是按照树的中序遍历打印的我们只需要在中序遍历打印的时候操作该节点我们可以用临时变量保存这个节点同时我们也需要单独增加一个链表节点变量我们需要保证这个节点的左边指向是该链表节点然后该链表节点的右指向是这个节点然后我们再把这个节点赋值给这个链表节点就这样一直移动下去即可。 3 代码实现 我这里以下面的搜索二叉树进行操作的 42 61 3 5 7 #include stdio.h #include stdlib.htypedef struct Tree {int value;struct Tree* left;struct Tree* right; } Tree;/** 把搜索二叉树转成双向链表我们按照中序遍历*/ void convertNode(Tree* node, Tree** lastNodeList) {if (node NULL)return;Tree* pCurrent node;if (pCurrent-left ! NULL){convertNode(pCurrent-left, lastNodeList);}//这里就要进行我们每个节点的前后正确的指向了pCurrent-left *lastNodeList;if (*lastNodeList ! NULL){(*lastNodeList)-right pCurrent;}*lastNodeList pCurrent;if (pCurrent-right ! NULL){convertNode(pCurrent-right, lastNodeList);} }/** 把翻转好的双向链表尾巴节点移动到链表头*/ Tree* convert(Tree* node, Tree* lastNodeList) {if (node NULL || lastNodeList NULL){printf(node is NULL or lastNodeList is NULL\n);return NULL;}Tree* last NULL;convertNode(node, lastNodeList);//因为这个时候lastNodeList已经到了双向链表尾巴我们需要移动到链表头Tree* headNodeList lastNodeList;while (headNodeList ! NULL headNodeList-left ! NULL){headNodeList headNodeList - left;} return headNodeList; }/** 双向链表从左到右打印*/ void printRightList(Tree* headNodeList) {if (headNodeList NULL){printf(headNodeList is NULL\n);return;}printf(we will print list from left to right\n);Tree* pCurrent headNodeList;while (pCurrent ! NULL){printf(value is %d\n, pCurrent-value);pCurrent pCurrent-right;} }/** 双向链表从右到左打印*/ void printLeftList(Tree* headNodeList) {if (headNodeList NULL){printf(headNodeList is NULL\n);return;}printf(we will print list from right to left\n);Tree* pCurrent headNodeList;//先把链表头结点移动为链表的尾巴while (pCurrent-right ! NULL){//printf(value is %d\n, pCurrent-value);pCurrent pCurrent-right;}//pCurrent pCurrent-left;while (pCurrent ! NULL){printf(value is %d\n, pCurrent-value);pCurrent pCurrent-left;} }int main(void) {Tree *node1 , *node2 , *node3, *node4, *node5, *node6, *node7;node1 (Tree *)malloc(sizeof(Tree));node2 (Tree *)malloc(sizeof(Tree));node3 (Tree *)malloc(sizeof(Tree));node4 (Tree *)malloc(sizeof(Tree));node5 (Tree *)malloc(sizeof(Tree));node6 (Tree *)malloc(sizeof(Tree));node7 (Tree *)malloc(sizeof(Tree)); node1-value 4;node2-value 2;node3-value 6;node4-value 1;node5-value 3;node6-value 5;node7-value 7;node1-left node2;node1-right node3;node2-left node4;node2-right node5;node3-left node6;node3-right node7;node4-left NULL;node4-right NULL;node5-left NULL;node5-right NULL;node6-left NULL;node6-right NULL;node7-left NULL;node7-right NULL;Tree* list (Tree *)malloc(sizeof(Tree));if (!list){printf(malloc list fail\n);return -1;}Tree* firstNodeList NULL;//convertNode(node1, list);firstNodeList convert(node1, list);if (firstNodeList NULL){printf(firstNodeList is NULL\n);return -1;}printRightList(firstNodeList);printLeftList(firstNodeList);return 0; } 4 运行结果 we will print list from left to right value is 0 value is 1 value is 2 value is 3 value is 4 value is 5 value is 6 value is 7 we will print list from right to left value is 7 value is 6 value is 5 value is 4 value is 3 value is 2 value is 1 value is 0
http://www.huolong8.cn/news/307253/

相关文章:

  • 阳谷建网站网站开发不懂英语
  • 国税网站模板重庆建设工程信息网最新网站
  • 扬州市市政建设处网站软考中级科目难度排行
  • 网站主页调用做网站1500全包
  • 爬虫做视频网站重庆市建设信息网站
  • 世界上做的最好的前端网站电脑怎么建网站详细步骤
  • seo网站排名软件c 网站开发网易云课堂百度云下载
  • 云存储能用来做网站吗长春市住房和城乡建设局网站
  • 广东网站建设方便如何看访问网站的dns
  • 网站seo分析报告案例建筑类电商网站
  • 必应网站管理员工具网站开发交流吧
  • 郑州餐饮 网站建设wordpress模板加密
  • 怎么做二级网站要查询一个网站在什么公司做的推广怎么查
  • 网站站长要会什么用杭州网站界面设计
  • 泰州专门做网站access 做网站 出现问题
  • 手机建设网站赚钱做移动网站优化优
  • 个人建立一个网站要多少钱苏州建设网站教程
  • 用phython做网站西城上海网站建设
  • 长宁怎么做网站优化好顺义网站开发
  • 宣汉网站建设招商外包公司哪家比较好
  • 安全的集团网站建设信息安全网站建设方案书
  • 细胞医疗 网站模版价格对比网站开发
  • 成都网站定制建设什么网站专门做二手物品
  • 做电商网站都需要学什么条件wordpress 源码下载主题
  • 廊坊网站建设的公司做网站练手
  • 万众城网站建设小米网络营销案例分析
  • 关于手机的网站有哪些内容吗潍坊专业网站制作公司营销
  • 北京网站建设91086武进做网站的公司
  • 湖南网站开发公司电话上海公司注册流程及费用标准
  • 英文网站建设服务合同企业做网站都需要准备哪些材料