随笔分类 -  数据结构(C语言)

双向链表的实现C
摘要:一、循环链表 循环链表是与单链表一样,是一种链式的存储结构,所不同的是,循环链表的最后一个结点的指针是指向该循环链表的第一个结点或者表头结点,从而构成一个环形的链。 循环链表的运算与单链表的运算基本一致。所不同的有以下几点: 1、在建立一个循环链表时,必须使其最后一个结点的指针指向表头结点,而不是象单链表那样置为NULL。此种情况还使用于在最后一个结点后插入一个新的结点。 2、在判断是否到表尾时,是判断该结点链域的值是否是表头结点,当链域值等于表头指针时,说明已到表尾。而非象单链表那样判断链域值是否为NULL。 二、双向链表 双向链表其实是单链表的改进。 当我们对单链表进行操作... 阅读全文
posted @ 2012-09-25 21:49 543fly 阅读(198) 评论(0) 推荐(0)
从1到n的一个序列依次入栈,则一共有多少种出栈方式
摘要:这个问题属于卡特兰数(h(n)=C(2n,n)/(n+1) (n=1,2,3,...))的应用,共有c(2n,n)-c(2n,n+1)=1/(n+1)*c(2n,n)中方式出栈。对于每一个数来说,必须进栈一次、出栈一次。我们把进栈设为状态‘1’,出栈设为状态‘0’。n个数的所有状态对应n个1和n个0组成的2n位二进制数。由于等待入栈的操作数按照1‥n的顺序排列、入栈的操作数b大于等于出栈的操作数a(a≤b),因此输出序列的总数目=由左而右扫描由n个1和n个0组成的2n位二进制数,1的累计数不小于0的累计数的方案种数。 在2n位二进制数中填入n个1的方案数为c(2n,n),不填1的其余n位自动. 阅读全文
posted @ 2012-09-23 13:36 543fly 阅读(635) 评论(0) 推荐(0)
SLinkList(静态链表)
摘要:// stdafx.h : 标准系统包含文件的包含文件,// 或是常用但不常更改的项目特定的包含文件//#define TRUE 1#define FLASE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define NULL 0typedef int Status;typedef char ElemType;#define MAXSIZE 1000 //链表的最大长度typedef struct{ElemType data;int cur; //注意这里不是指针,而是类似游标的指示器}compone 阅读全文
posted @ 2012-09-11 20:55 543fly 阅读(2327) 评论(0) 推荐(0)