C经典之14-双向链表存储1-10---ShinePans

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>  //system(); 这个指令需要用到此头文件
#include <ctype.h> //toupper要用到
#include <malloc.h> //在内存管理时用到的头文件
void main()
{
	int i;

	struct ListEntry{
		int number;  //数据域
		struct ListEntry *next;  //指向 下一个ListEntry节点的指针
		struct ListEntry *previous; //指向上一个 ListEntry节点的指针
	}start,*node, *newOne;

	start.next = NULL;  //置空链表
	start.previous = NULL;
	node = &start;  //指向链表的开始

	for (i = 1; i < 10; i += 2)
	{
		node->next = (struct ListEntry*)malloc(sizeof(struct ListEntry));
		node->next->previous = node;
		node = node->next;
		node->number = i;
		node->next = NULL;
	}
	for (i = 2; i <= 10; i += 2)
	{
		int found = 0;

		newOne = (struct ListEntry*)malloc(sizeof(struct ListEntry));
		newOne->number = i;
		node = start.next;

		do{
			if (node->number > newOne->number)
			{
				newOne->next = node;
				newOne->previous = node->previous;
				node->previous->next = newOne;
				node->previous = newOne;
				found = 1;
			}
			else{
				node = node->next;
			}
			}while ((node->next) && (!found));
			if (!found)
			if (node->number > newOne->number)
			{
				newOne->next = node;
				newOne->previous = node->previous;
				node->previous->next = newOne;
				node->previous = newOne;
			}
			else{
				newOne->next = NULL;
				newOne->previous = node;
				node->next = newOne;
			}
		}
		node = start.next;
		do{
			printf("%d", node->number);
			node = node->next;
		} while (node);
	system("pause");
}

这个代码非常经典,将1-10 不按书顺序存入双向链表,并且重新编排,使其最终输出 为 12345678910

C经典之14-双向链表存储1-10---ShinePans,布布扣,bubuko.com

时间: 2024-07-30 20:30:37

C经典之14-双向链表存储1-10---ShinePans的相关文章

[MySQL Reference Manual]14 InnoDB存储引擎

14 InnoDB存储引擎 14 InnoDB存储引擎... 1 14.1 InnoDB说明... 5 14.1.1 InnoDB作为默认存储引擎... 5 14.1.1.1 存储引擎的趋势... 5 14.1.1.2 InnoDB变成默认存储引擎之后... 5 14.1.1.3 InnoDB表好处... 6 14.1.1.4 InnoDB表最佳实践... 6 14.1.1.5 InnoDB表提升... 6 14.1.1.6 InnoDB作为默认存储引擎测试... 6 14.1.1.7 验证In

ubuntu 14.04 安装 vmware 10 X64 后无法启动解决方法

ubuntu 14.04 安装成功后,平时的工作什么的都够用了, 最近需要做一个测试,测试环境还必须是windows的.所以就准备整个虚拟机来,kvm 跟 vmware 考虑再三,选择了 vmware .vmware 10的安装方法,就不做说明了.度娘或谷哥还是有蛮多方法.我这里所写的是,vmware 安装后,启动时报错. 报错图片如下: 解决方法: 当然方法有很多种,我也试过几种方法,有使用patch 的,但是我用这种方法的时候,出现错误了,继续找方法的时候,有网友有告诉过这样一种方法,就是手

SpringMVC + Spring 3.2.14 + Hibernate 3.6.10

SpringMVC + Spring 3.2.14 + Hibernate 3.6.10 集成详解 注:此文档只说明简单的框架集成,各个框架的高级特性未涉及,刚刚接触框架的新人可能需要参考其他资料. PS:本次练习所用jar包都能在此下载到:http://pan.baidu.com/s/1sjmgdYX 准备工作 开发环境:JDK 7u80.Eclipse 4.4 .Tomcat 7.0.63.MySQL 5.6   开发使用组件:Spring 3.2.14.Hibernate 3.6.10.c

SpringMVC经典系列-14自定义SpringMVC的拦截器---【LinusZhu】

注意:此文章是个人原创,希望有转载需要的朋友们标明文章出处,如果各位朋友们觉得写的还好,就给个赞哈,你的鼓励是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系[email protected],敬请朋友们斧正,谢谢. 这部分主要讲解SpringMVC的拦截器的部分,会带着大家完成定义拦截器的两种方式的实例,不多说了,开始-- SpringMVC的拦截器主要是用于拦截用户的请求,并且进行相应的处理,如:权限验证.判断登录等. 定义拦截器的两种方式,如下: 1. 实现接

C经典之13-Asking的实时监听---ShinePans

题目描述 有n张卡片,分别标有数字1~n.有一天Silence把他们按某种序列排好,然后从第一张开始取出一张,再拿一张放到最后面,再取出一张,再拿出一张放到最后面...知道n张卡片全部取走.把取出的卡片按取出的顺序排好,正好是1,2,3,4,....,n. 现在,告诉你n,Silence希望你帮他计算原来的序列的逆序数. 例如,n=4时,原来的序列应该是1,3,2,4.这样,先取出卡片1,再把卡片3放到最后面,序列变成了2,4,3.再把2取出来,4放到后面,序列变成了3,4.再把3取出来,4放最

SpringMVC + Spring 3.2.14 + Hibernate 3.6.10 集成详解

PS:本次练习所用jar包都能在此下载到:http://pan.baidu.com/s/1sjmgdYX 准备工作 开发环境:JDK 7u80.Eclipse 4.4 .Tomcat 7.0.63.MySQL 5.6   开发使用组件:Spring 3.2.14.Hibernate 3.6.10.common-logging 1.2.aopalliance.jar.aspectjweaver.jar.mysql-connector-java-5.1.35-bin.jar 在Eclipse下创建动

一般数据存储和批量数据存储比较--10万条数据

一.在数据库中建立Student表 二.创建10万条数据 创建数据 三.创建一般数据存储方法 public static void SaveGeneral(DataTable dt) { string strConn = @"Data Source=.;Initial Catalog=Test;Integrated Security=True"; SqlConnection conn = new SqlConnection(strConn); conn.Open(); SqlComma

架构设计:系统存储(10)——MySQL简单主从方案及暴露的问题

1.概述 从本篇文章开始我们将花一定的篇幅向读者介绍MySQL的各种服务集群的搭建方式.大致的讨论思路是从最简的MySQL主从方案开始介绍,通过这种方案的不足延伸出更复杂的集群方案,并介绍后者是如何针对这些不足进行改进的.MySQL的集群技术方案特别多,这几篇文章会选择一些典型的集群方案向读者进行介绍. 2.MySQL最简单主从方案及工作原理 我们讲解的版本还是依据目前在生产环境上使用最多的Version 5.6进行,其中一些特性在Version 5.7和最新的Version 8.0中有所改进,

Ubuntu 14.04 编译newLISP 10.6.0

1. 确保安装了gcc4.8.2 2. 安装须要的库: apt-get install libreadline6 libreadline6-dev 3. 下载并解压newLISP源码,这个不多说了,去newlisp.org网站下载. 放到/usr/src文件夹下 wget http://www.newlisp.org/downloads/newlisp-10.6.0.tgz 4. 解压后进入文件夹, 编译并安装.均在root权限下执行. tar zxvf newlisp-10.6.0.tgz c

python练习程序(c100经典例14)

题目: 将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. def foo(n): while 1: for i in range(2,n+1): if n%i==0: print i, n=n/i; break; if n==1: break; for i in range(1,100): foo(i) print