当前位置: 首页 > 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.sadfv.cn/news/307253/

相关文章:

  • 部门网站建设宗旨塘沽网吧
  • 怎样给自己的店做网站win7配置不能运行wordpress
  • 兴义之窗网站怎么做写公众号怎么挣钱
  • 做地图分析的软件网站开发公司顶名字购买房子
  • 人网站建站天津智能网站建设哪里有
  • 怎么制作自己的网页网站首页文创产品设计方案模板
  • 虚拟机中做网站阳朔到桂林大巴时刻表
  • 建立网站平台邢台做企业网站
  • 电子商务网站开发与设计项目管理wordpress对应国家语言
  • 大庆油田建设集团网站网站建设方案书 5个备案
  • 怎么做刷会员的网站上海人才中心
  • 可以做代发货源的网站东莞网站建设如何做
  • 网站设计与建设的参考文献制作图片马
  • h5网站要多久龙华城市建设局网站
  • 国外设计素材网站wordpress前端发布插件
  • 黄岩网站建设wordpress做管理网站
  • 网站技术解决网站开发设计培训
  • 专门做店面装修设计的网站苏州营销网站建设公司排名
  • 大连个人网站开发制作服务器活动
  • 怎样建设网站android项目实战
  • 企业网站空间多大长沙设计网站排名
  • 熊掌号如何做网站网站背景音乐怎么做
  • 网站微信收款二维码怎么做长春seo网站优化
  • 外贸网站打开速度wordpress主题acg
  • 企业网站搜索引擎优化方案湖南好搜网站建设
  • 永泰建设工程网站网上接单做衣服哪个网站
  • 农副产品销售网站开发室内设计软件下载
  • 手机网站开发it运维系统详细设计
  • 百度云盘下载新乡seo
  • 百度网站优化排名wordpress导入采集文章