`

双向链表 数字按降序排列

    博客分类:
  • c
c 
阅读更多
#include <stdio.h>
#include <malloc.h>


typedef struct Tag_Node{
	struct Tag_Node *left;
	struct Tag_Node *right;
	int value;
}TNode;


TNode *root = NULL;

void append(int value){
	TNode *NewNode = (TNode *) malloc(sizeof(TNode));
	NewNode -> value = value;
	NewNode -> left = NULL;
	NewNode -> right = NULL;

	if (NULL == root){
		root = NewNode;
		return;
	}
	else{
		TNode *temp = root;

		while((value >= temp -> value && temp -> left != NULL) || (value < temp -> value && temp -> right != NULL)){
			while(value >= temp ->value && temp -> left!= NULL){
				temp = temp -> left;
			}
			while (value < temp -> value && temp -> right != NULL )
				temp = temp -> right;
		}

		if (value >= temp -> value){
			temp -> left = NewNode;
			NewNode -> right = temp;
		}else{
			temp -> right = NewNode;
			NewNode -> left = temp;
		}
		return ;
	}

}


void print(){
	TNode *sidenode = root;

	if (NULL == root){
		printf("there is no value!\n");
		return ;
	}

	if (root -> left != NULL){
		sidenode = root -> left;
	}else{
		sidenode = root;
	}

	while(1){
		if (sidenode -> left == NULL)
			break;
		sidenode = sidenode -> left;
	}

	while(sidenode != NULL){
		printf("%d ", sidenode -> value);
		sidenode = sidenode -> right;
	}
	printf("\n");

	return ;
}

int main(){
	append(43);
	append(34);
	append(17);
	print();
	return 0;
}

0
0
分享到:
评论

相关推荐

    课程设计 - 数据结构 -112,113,115班题目要求

    - **建立双向链表L,含n个结点且按整数值递增排列**:构建一个按照整数值递增顺序排列的双向链表。 - **删除双向链表中多余的值相同的元素**:去除链表中重复的元素。 - **求出链表的长度**:计算链表中节点的数量。...

    C++面向对象程序设计教程课程设计-学生信息管理系统-报告

    - **排序**:支持对指定课程的成绩进行升序或降序排列。 - **信息检索**:新增功能,可以快速定位到特定学生的信息。 - **界面设计**:采用简单的菜单式界面,用户可以通过输入数字选择所需的操作。 - **编码...

    数据结构算法数据结构材料

    例如,排序算法接收一个数字序列作为输入,并返回一个按非降序排列的输出序列。算法必须具备可行性、确定性、有穷性,同时包括输入和输出两个要素。正确设计和分析算法是提高程序性能的关键。 数据结构是数据的组织...

    2021-2022计算机二级等级考试试题及答案No.4076.docx

    - **冒泡排序**:给出的代码实现了对数组中的元素按降序排列的功能,使用了冒泡排序算法。需要注意的是,数组中的第一个元素没有参与排序,因此最终输出的结果中第一个元素的位置不变。 ### 9. 继承性与成员数量的...

    华为、大唐电信等数100家全球知名IT公司经典面试题

    在这里,可以选择最简单的冒泡排序,通过两层循环,不断交换相邻的元素以达到降序排列。 3. 波那其数列(斐波那契数列)问题:波那其数列是每个数等于前两个数之和。要求第十项,可以直接计算,也可以用递归。递归...

    计算机二级ACCSEE笔试44.pdf

    39. 排序可以按照升序(升序排列数据)或降序(降序排列数据)进行。 40. E-R模型(实体-关系模型)是一种概念数据模型,用于描述数据库的实体、关系和属性。 41. Access数据库文件的扩展名为.mdb,表示Microsoft ...

    2021-2022计算机二级等级考试试题及答案No.10513.docx

    所以,正确查询类型为"食品"的商品信息并按类型降序排列的SQL语句是SELECT * FROM 商品 WHERE 类型="食品" ORDER BY 类型 DESC。 12. **构造函数** - 构造函数是类的一个特殊成员函数,用于初始化新创建的对象,其...

    MyRedis.rar

    你可以将它视为双向链表,支持在两端添加或删除元素。`LPUSH key value`在列表头部添加元素,`RPUSH key value`在尾部添加,`LPOP key`和`RPOP key`分别从头部和尾部取出元素。 4. 集合(Sets):集合对象存储不...

    46家公司技术笔试题

    1. **问题描述**:完成程序,使给定数组按降序排列。 2. **解决方案**:此题可采用简单的冒泡排序算法实现,通过两层循环比较相邻元素的大小,进行交换操作以达到降序排序的目的。 3. **示例代码**: ```c #...

    46家公司笔试题.pdf

    - **解析**:使用了冒泡排序算法进行数组的降序排列。通过两层循环比较相邻元素的大小,如果前一个元素小于后一个元素,则交换它们的位置。 **知识点3:斐波那契数列计算** - **题目要求**:编写程序求斐波那契...

    数据结构预算

    - 将有向无环图中的顶点按某种顺序排列。 - 满足每条有向边的起点都在其终点之前。 - **关键路径** - 在工程网络图中,最长的路径称为关键路径。 - 关键路径决定了整个项目的最短完成时间。 #### 八、查找 **...

    46家公司笔试题 46家公司笔试题

    - **降序排序**:理解如何通过修改比较逻辑实现降序排列。 **示例代码**: ```c #include void sort(int array[], int n) { int i, j, temp; for (i = 0; i ; i++) { for (j = 0; j ; j++) { if (array[j] [j...

    数据结构与算法(JAVA语言版)

    - **双向链表:** 双向链表除了包含指向下一个节点的引用外,还包含一个指向前一个节点的引用,这使得双向链表在进行插入和删除操作时更加灵活高效。 - **线性表的单链表实现:** 实现线性表的单链表结构需要定义...

    c语言经典案例

    实例199 创建双向链表 284 实例200 创建循环链表 287 实例201 使用头插入法建立单链表 289 实例202 双链表逆序输出 291 实例203 约瑟夫环 293 实例204 创建顺序表并插入元素 294 实例205 合并两个链表 296 实例206 ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数,其中,M表示精度,代表数字的总位数;N表示小数点右边数字的位数 日期类型 date 7字节 用于存储表中的日期和时间数据,取值范围是公元前4712年1月...

Global site tag (gtag.js) - Google Analytics