`

双向链表 数字按降序排列

    博客分类:
  • 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
分享到:
评论

相关推荐

    双向链表双向链表双向链表

    http://msdn.microsoft.com/en-us/library/95z04bas(v=VS.71).aspx 双向链表

    双向链表双向链表

    双向链表

    双向链表的操作

    建立一个长度为n的带头结点的双向链表,使得该链表中的数据元素递增有序排列。(必须使用双向链表完成,数据类型为整型。) Input 第一行:双向表的长度; 第二行:链表中的数据元素。 Output 输出双向链表中...

    Linux内核双向链表简单分析

    详细的介绍了Linux内核中使用的最频繁的双向链表

    双向链表.cpp 双向链表类定义及测试代码 c++

    双向链表类定义及测试文件 对应于数据机构与算法分析(c++版)第三版或第二版 Clifford A.Shaffer 重庆大学使用教材

    双向链表实现结点类

    定义、实现并测试一个双向链表结点类DNode。 链表结点类中包含私有数据成员为两个整数x,y以及左结点指针left及右结点指针right。 包含的函数成员包括: (a)对结点的数据成员赋值setDNodeValues(int,int,DNode* ...

    支持类模版的C++双向链表

    一种支持类模版和函数模版的C++双向链表,实现了各种排序算法(排序原则可定制),包含学生信息的使用示例(VC 6.0、VS2008).

    双向链表的增删改查

    实现双向链表的增删改查功能,dos窗口输入输出,可运行,有注释

    创建双向链表_双向链表_

    通过建立双向链表,来实现双向查找,增加和删除的功能

    线程安全型双向链表的实现

    操作系统c++编程实现安全型双向链表,线程的创建,利用线程对链表进行增删改操作,并检验结果是否正确

    [实验1]双链表与多项式.cpp

    1. 编写使用freelist 的带头、尾结点的双向链表类的定义,实现双向... 利用双向链表实现2个一元多项式的加法和乘法运算,运算结果得到的链表要求按照指数降序排列的多项式。 3. 最后提交完整的实验报告和源程序。

    操作系统课设-线程安全的双向链表

    原创手操,操作系统课设,线程安全的双向链表,VC6.0,无须配置,可运行

    大数阶乘 双向链表

    用双向链表实现大数阶乘 输入一个不限制大小的数 即可计算出它的阶乘

    双向链表的C++实现

    基础数据结构双向链表的C++描述版。实现了双向链表的基本功能。包括拷贝构造函数和IO操作符重载、赋值操作符重载

    双向链表API及C语言实现

    包含了双向链表的结点结构体、表头结构体、创建双向链表、销毁双向链表、获取链表长度、清空双向链表、插入一个节点元素(包含异常分析)、按位置删除链表结点(包含异常分析)、按元素删除链表结点、返回一个结点...

    sxlb.rar_C 链表_C 双向链表_stdafx.h_双向链表_链表

    双向链表\qdlist.h 双向链表\stdafx.cpp 双向链表\stdafx.h 双向链表\双向链表.cpp 双向链表\双向链表.ncb 双向链表\双向链表.dsw 双向链表\双向链表.dsp 双向链表\双向链表.opt

    双向链表实现工资管理

    排序插入,更具数据查找结点及修改结点数据等功能,链表根据姓名排序 根据姓名查找记录时支持通配符*和?,即*通配任意字符和字符串,?通配一个字符,字符不分大小。 将工资管理以文件的形式存在磁盘上,每次操作时...

    二叉树转换为双向链表

    二叉树转换为双向链表 通过随机创建二叉排序树测试二叉树转换为双向链表是否正确 http://blog.csdn.net/ssuchange/article/details/17383625

    LinkLink_curd_Python双向链表_游标排序_

    Python双向链表

    双向链表 - 数据结构与算法 C 请看!

    双向链表 - 数据结构与算法 C 双向链表 - 数据结构与算法 C 。。。。。。

Global site tag (gtag.js) - Google Analytics