当前位置: 首页 > 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);
}

相关文章:

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

题1&#xff1a; 某带头结点的非空单链表L中所有元素为整数&#xff0c;结点类型定义如下&#xff1a; typedef struct node { int data; struct node *next; } LinkNode; 设计一个尽可能高效的算法&#xff0c;将所有小于零的结点移到所有大于等于零的结点的前面。 分…...

分享106个ASP影音娱乐源码,总有一款适合您

分享106个ASP影音娱乐源码&#xff0c;总有一款适合您 106个ASP影音娱乐源码下载链接&#xff1a;https://pan.baidu.com/s/13k8UaJrCci_z4Q0gQbtDtg?pwdjq44 提取码&#xff1a;jq44 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 我的博客地址&#xff1a;亚…...

win10 PyCharm Anaconda过程记录

1、Anaconda用来配置不同的虚拟环境 进入 Anaconda Prompt 输入conda activate Hui&#xff08;此为自己创建的放置虚拟环境的文件夹&#xff09; 编译运行过程中出现No module named seaborn后 pip install seaborn...

Chrome扩展程序导出备份与本地导入浏览器

现在即使在国内下载个chrome&#xff0c;转个插件也千难万难。现在科学上网也越来越难&#xff0c;由于众所周知的原因&#xff0c;连qiang这个话题都是敏感词。哀默于心死&#xff0c;还是回避这个话题 只要把之前装的chrome打包&#xff0c;然后再重新安装一遍。操作步骤如下…...

mysql常用运算符

mysql常用运算符一、去重和空值1.distinct2.null参与运算3.用ifnull函数解决问题二、比较运算符三、dual伪表和数值运算1.常规运算2.比较运算符3.<>安全相等四、常用正则相关的比较运算符1.基本运算符2.模糊查询3.正则表达式五、逻辑运算符六、位运算总结一、去重和空值 …...

PyTorch 深度学习框架:优雅而简洁的代码实现

PyTorch 是由 Facebook 发布的深度学习框架&#xff0c;旨在为研究人员和工程师提供快速、灵活和简单的实验平台。与其他框架相比&#xff0c;PyTorch 具有简洁的 API 和灵活的动态计算图&#xff0c;使得构建和训练深度神经网络变得更加优雅和简洁。本文将介绍 PyTorch 的基本…...

【SpringMVC】请求重定向和转发

forward&#xff1a;表示转发 处理器方法返回ModelAndView,实现转发forward 语法&#xff1a; setViewName("forward:视图文件完整路径") forward特点&#xff1a; 不和视图解析器一同使用&#xff0c;就当项目中没有视图解析器redirect&#xff1a;表示重定向 处理…...

Vue中@click的常见修饰符

在 Vue 的click事件中&#xff0c;可以使用以下修饰符&#xff1a; .stop&#xff1a;阻止事件继续传播。.prevent&#xff1a;阻止默认事件。.capture&#xff1a;使用事件捕获模式。.self&#xff1a;只当事件是从侦听器绑定的元素本身触发时才触发回调。.once&#xff1a;只…...

软件测试面试复盘:技术面没有难倒我,hr面被虐的体无完肤

一般提到面试&#xff0c;肯定都会想问一下面试结果&#xff0c;我就大概的说一下面试结果&#xff0c;哈哈&#xff0c;其实不太想说&#xff0c;因为挺惨的&#xff0c;并没有像很多大佬一样 ”已拿字节阿里腾讯各大厂offer”&#xff0c;但是毕竟是自己的经历&#xff0c;无…...

vue实现鼠标移入移出事件+解决鼠标事件没有反应

鼠标移入移出事件代码 <div mouseenter"onMouseOver(item)" mouseleave"onMouseOut"></div> methods methods:{// 鼠标移入onMouseOver(item){console.log(item, 鼠标进来了);},// 鼠标移出onMouseOut(){console.log(鼠标出去了);}, }, 这…...

右键移动文件.cmd

REM xcopy /yis %1% % % %D:\test\% REM https://zhuanlan.zhihu.com/p/38330443 不能移动文件夹 不知道为什么 xcopy&#xff08;拷贝目录文件、目录结构的指令&#xff09;_尚可名片 写了个JAVA程序&#xff0c;怎样实现在win选中文件后&#xff0c;右键发送到我的程序&am…...

web基础

web基础 与http 域名&#xff1a;由于IP地址不易记忆&#xff0c;域名用来代替IP地址&#xff0c; &#xff08;DNS&#xff09;服务与配置&#xff1a;先在本地hosts里去找&#xff0c;然后在本地域名服务器递归查找&#xff0c;本地域名服务器在一级二级按域名长度迭代查找后…...

牛客网算法八股刷题系列(七)正则化(软间隔SVM再回首)

牛客网算法八股刷题系列——正则化[软间隔SVM再回首]题目描述正确答案&#xff1a;C\mathcal CC题目解析开端&#xff1a;关于函数间隔问题解释的补充软间隔SVM\text{SVM}SVMHinge\text{Hinge}Hinge损失函数支持向量机的正则化题目描述 关于支持向量机(Support Vector Machine…...

开源即时通讯IM框架MobileIMSDK的微信小程序端开发快速入门

一、理论知识准备 您需要对微信小程序开发有所了解&#xff1a; 1&#xff09;真正零基础入门学习笔记系列2&#xff09;从零开始的微信小程序入门教程3&#xff09;最全教程&#xff1a;微信小程序开发入门详解 您需要对WebSocket技术有所了解&#xff1a; 1&#xff09;新…...

【C++从0到1】11、C++中赋值运算

C从0到1全系列教程 1、赋值运算 运算符示例描述c a b;将把a b的值赋给c。 把右边操作数的值赋给左边操作数。c a;相当于 c c a; 加且赋值运算符&#xff0c;把右边操作数加上左边操作数的结果赋值给左边操作数。-c - a;相当于 c c - a; 减且赋值运算符&#xff0c;把左…...

GaussDB数据库事务介绍

目录 一、前言 二、GaussDB事务的定义及应用场景 三、GaussDB事务的管理 四、GaussDB事务语句 五、GaussDB事务隔离 六、GaussDB事务监控 七、总结 一、前言 随着大数据和互联网技术的不断发展&#xff0c;数据库管理系统的作用越来越重要&#xff0c;实现数据的快速读…...

MYSQL——美团面试题

MYSQL——美团面试题 2023/3/27 美团二面 题目描述 Create table If Not Exists courses (student varchar(255), class varchar(255));insert into courses (student, class) values (A, Math); insert into courses (student, class) values (B, English); insert into co…...

Python 小型项目大全 16~20

#16 钻石 原文&#xff1a;http://inventwithpython.com/bigbookpython/project16.html 这个程序的特点是一个小算法&#xff0c;用于绘制各种尺寸的 ASCII 艺术画钻石。它包含绘制轮廓或你指定大小的填充式菱形的功能。这些功能对于初学者来说是很好的练习&#xff1b;试着理解…...

UE4/5C++之SubSystem的了解与创建

目录 了解生命周期 为什么用他&#xff0c;简单讲解&#xff1f; SubSystems创建和使用 创建SubSystems中的UGamelnstanceSubsystem类&#xff1a; 写基本的3个函数&#xff1a; 在蓝图中的样子&#xff1a; 创建SubSystems中的UEditorSubsystem类&#xff1a; SubSyste…...

牛客网在线编程SQL篇非技术快速入门题解(二)

大家好&#xff0c;我是RecordLiu。 初学SQL,有哪些合适的练习网站推荐呢? 如果你有编程基础&#xff0c;那么我推荐你到Leetcode这样的专业算法刷题网站&#xff0c;如果没有&#xff0c;也不要紧&#xff0c;你也可以到像牛客网一样的编程网站去练习。 牛客网有很多面向非技…...

nix-installer多平台部署实战:Linux、macOS、WSL全攻略

nix-installer多平台部署实战&#xff1a;Linux、macOS、WSL全攻略 【免费下载链接】nix-installer Install Nix and flakes with the fast and reliable Determinate Nix Installer, with over a million installs. 项目地址: https://gitcode.com/gh_mirrors/ni/nix-instal…...

视频生成技术新范式:Wan2.2如何重新定义AI创作边界

视频生成技术新范式&#xff1a;Wan2.2如何重新定义AI创作边界 【免费下载链接】Wan2.2-Animate-14B 项目地址: https://ai.gitcode.com/hf_mirrors/Wan-AI/Wan2.2-Animate-14B 在数字内容创作领域&#xff0c;视频生成技术正经历着从实验性探索到产业化应用的关键转型…...

Fire Dynamics Simulator:火灾动力学模拟的技术原理与工程应用

Fire Dynamics Simulator&#xff1a;火灾动力学模拟的技术原理与工程应用 【免费下载链接】fds Fire Dynamics Simulator 项目地址: https://gitcode.com/gh_mirrors/fd/fds 火灾作为一种复杂的物理化学过程&#xff0c;其模拟需要精确捕捉流体流动、热传递和化学反应等…...

记一次 uni-app开发微信小程序 textarea 的“伪遮挡”踩坑实录

文章目录1. 问题描述2. 出现原因3. 解决办法3.1. 给下单按钮添加z-index3.2. 调整textarea的z-index4. 问题解决1. 问题描述 在订单页面中&#xff0c;我使用了 textarea 作为备注输入框&#xff0c;底部有一个固定定位的“下单”按钮。当页面滚动时&#xff0c;textarea 会与…...

告别鼠标卡顿:Mac Mouse Fix实现第三方鼠标全栈优化,效率提升200%的实战指南

告别鼠标卡顿&#xff1a;Mac Mouse Fix实现第三方鼠标全栈优化&#xff0c;效率提升200%的实战指南 【免费下载链接】mac-mouse-fix Mac Mouse Fix - A simple way to make your mouse better. 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 问题溯…...

从CVE-2023-3450看锐捷RG-BCR860路由器:一次网络诊断功能引发的命令注入实战剖析

1. 漏洞背景与设备介绍 锐捷RG-BCR860是面向中小型商业场景设计的云路由器&#xff0c;主打简单易用的中文Web管理界面。这款设备常见于连锁餐饮、快捷酒店等需要稳定网络环境的场所&#xff0c;最大支持150台终端同时接入。作为一款商用设备&#xff0c;它内置了安全审计模块和…...

北斗网格位置码实战:从编码原理到Java实现(非极地)

1. 北斗网格位置码&#xff1a;为什么我们需要它&#xff1f; 当你打开手机地图查看自己的位置时&#xff0c;看到的通常是经纬度坐标。这种表示方式虽然精确&#xff0c;但在实际应用中却存在不少问题。比如在物流配送系统中&#xff0c;直接存储和查询经纬度数据效率很低&am…...

芯片创业资金消耗与团队构建全解析

芯片初创公司的资金消耗分析&#xff1a;从架构设计到流片量产1. 芯片创业的资金挑战概述芯片设计行业作为典型的技术密集型产业&#xff0c;其创业过程面临着独特的资金挑战。与互联网创业不同&#xff0c;芯片公司从组建团队到产品量产需要经历漫长的研发周期和巨额的资金投入…...

InstructPix2Pix解决修图难题:图片结构不崩,只改你想改的部分

InstructPix2Pix解决修图难题&#xff1a;图片结构不崩&#xff0c;只改你想改的部分 1. 颠覆传统的智能修图革命 想象一下&#xff1a;你有一张完美的旅行照片&#xff0c;但背景中的天气不尽如人意&#xff1b;或者一张专业人像&#xff0c;需要微调表情却不想重拍。传统修…...

Nix系统修复终极指南:快速解决包管理问题与数据恢复

Nix系统修复终极指南&#xff1a;快速解决包管理问题与数据恢复 【免费下载链接】nix Nix, the purely functional package manager 项目地址: https://gitcode.com/gh_mirrors/ni/nix Nix作为一款纯粹函数式的包管理器&#xff0c;以其独特的依赖管理和环境隔离机制受到…...