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

数据结构|将链表中小于0的数全部放在大于0的数的前面

题1:

某带头结点的非空单链表L中所有元素为整数,结点类型定义如下:

typedef struct node

{   int data;

    struct node *next;

} LinkNode;

设计一个尽可能高效的算法,将所有小于零的结点移到所有大于等于零的结点的前面。

分析

定义一个p指针指向L->next,一个pre指向头结点(也就是p指针的前驱)。

该题可以使用while循环先找到第一个小于0的数(其实这一步也可以不要,因为后面那个while也可以做到,不过这里为了方便理解,所以就加上了),然后再使用while循环将该小于0的结点在原位置删除,将其插入到头结点后面(其实这里就有点像单链表的头插法),然后指针指回pre的next,进行比较,大于0就跳过,往后查找,小于0就按上面的规则进行删除,然后使用头插法插入头结点后面,直到所有结点都处理完毕。

void Move(LinkNode *&L)
{	LinkNode *p=L->next,*pre=L;while (p!=NULL && p->data<0)	//跳过小于0的结点{      pre=p;p=pre->next;}while (p!=NULL){	if (p->data<0)			//若*p结点值小于0{	pre->next=p->next;	//从链表中删除*p结点p->next=L->next;	//将*p结点插入到头结点之后L->next=p;p=pre->next;		//p指向*pre之后结点,pre不变}else					//若*p结点值不小于0{	pre=p;				//pre、p同步后移一个结点p=p->next;}}
}

题2:

假设二叉树中有n个结点,每个结点值为单个字符,而且所有结点值均不相同,采用二叉链存储结构存储,其结点类型定义如下:

typedef struct node

{    char data;

     struct node *lchild,*rchild;

} BTNode;

请完成以下任务:

(1)设计一个算法,在二叉树b中查找x结点(指结点值为x的结点),若找到该结点,返回其地址,否则返回NULL。

BTNode *Findx(BTNode *b,char x)	//在二叉树b中查找x结点
{	BTNode *p;if (b==NULL) return NULL;else{ 	if (b->data==x)return b;p=Findx(b->lchild,x);if (p!=NULL)return p;return Findx(b->rchild,x);}
}

题3:

(2)设计一个算法,利用(1)小题设计的算法输出二叉树bx结点的所有子孙结点值。

void Sons(BTNode *b,char x)		//输出x结点的子孙,初始时b指向x结点
{	if (b!=NULL){	if (b->data!=x)printf("%c ",b->data);Sons(b->lchild,x);Sons(b->rchild,x);}
}
void OutSons(BTNode *b,char x)	//输出二叉树b中x结点的所有子孙结点值
{	BNode *p= Findx(b,x);if (p!=NULL)Sons(p,x);
}

http://www.lryc.cn/news/56471.html

相关文章:

  • 分享106个ASP影音娱乐源码,总有一款适合您
  • win10 PyCharm Anaconda过程记录
  • Chrome扩展程序导出备份与本地导入浏览器
  • mysql常用运算符
  • PyTorch 深度学习框架:优雅而简洁的代码实现
  • 【SpringMVC】请求重定向和转发
  • Vue中@click的常见修饰符
  • 软件测试面试复盘:技术面没有难倒我,hr面被虐的体无完肤
  • vue实现鼠标移入移出事件+解决鼠标事件没有反应
  • 右键移动文件.cmd
  • web基础
  • 牛客网算法八股刷题系列(七)正则化(软间隔SVM再回首)
  • 开源即时通讯IM框架MobileIMSDK的微信小程序端开发快速入门
  • 【C++从0到1】11、C++中赋值运算
  • GaussDB数据库事务介绍
  • MYSQL——美团面试题
  • Python 小型项目大全 16~20
  • UE4/5C++之SubSystem的了解与创建
  • 牛客网在线编程SQL篇非技术快速入门题解(二)
  • 航天器轨道六要素和TLE两行轨道数据格式
  • 【Spring Cloud Alibaba】第01节 - 课程介绍
  • iOS和Android手机浏览器链接打开app store或应用市场下载软件讲解
  • 2023第十四届蓝桥杯省赛java B组
  • windows下如何快速搜索文件内容
  • Redis集群分片
  • ISP-AF相关-聚焦区域选择-清晰度评价-1(待补充)
  • [element-ui] el-table行添加阴影悬浮效果
  • 分布式存储技术(上):HDFS 与 Ceph的架构原理、特性、优缺点解析
  • 【python设计模式】20、解释器模式
  • 【PostgreSQL】通过docker的方式运行部署PostgreSQL与go操作数据库