博文
[转载]两个人的世界,就是天堂……(2006-04-11 16:41:00)
摘要:
那天晚上,她在路灯下捡到一个天使
她把他带回家,发现他只有一只翅膀
她每天细心照顾著他,他们爱上了对方
然而,天使总是忍不住看著窗外的天空,渴望在天堂飞翔的感觉
她看见了,想尽办法找寻另一只翅膀,只为了让他快乐
她发现,「梦想」是打造翅膀的唯一方法,但是……
如果把梦想给了他,她将永远坠入没有梦的世界,而天使,也会离她而去……
最後,她终於下定决心……
这天晚上,她将亲手打造的礼物交给天使,期待看到他开心的表情
才惊觉,天使的另一只翅膀也不见了
他们看著彼此送给对方的天使之翼,觉得幸福的天堂已然降临……
有时候,飞翔,不一定需要翅膀
因为两个人的世界,就是天堂……
......
二叉树的相关操作(转载)(2006-03-28 10:03:00)
摘要:二叉树的相关操作,转载http://www.programfan.com/club/showbbs.asp?id=135842
作者:lyt8604@sohu.com
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
#define OK 1
#define MAXLEN 100
typedef int ElemType;
typedef struct bnode
{
ElemType data;
struct bnode *left,*right;
}bnode,*btree;
int creat(btree &b)//创建二叉树并向树输入结点
{
void insert(btree &b,bnode *t);
int x;
bnode *s;
b=NULL;
scanf("%d",&x);
while(x!=0)
{
s=(bnode *)malloc(sizeof(bnode));
s->data=x;
s->left=NULL;
s->right=NULL;
insert(b,s);
scanf("%d",&x);
}//输入结点以0结束
return OK ;
数组与链表等顺序表逆置(2006-03-27 14:09:00)
摘要:一)数组的逆置
(1)算法
#indclude<stdio.h>
#define N 8
main()
{
int array[N] = {100,90,80,70,60,50,50,40};
int i,j,t;
for(i=0,j=N-1;i<j; i++, j--)
{
t = array[i];
array[i] = array[j];
array[j] = t;
}
for(i=0,i<listsize;i++)
printf("%d",qlist.data[i])
}
(2)时间复杂度
由于只需循环N/2即可完成逆置,所以时间复杂度为O(N/2).
(二)单向链表的逆置
(1)算法
......
单链表逆置(2006-03-27 11:16:00)
摘要:单链表的逆置的实现:
(1)算法
struct link
{
int data;
struct link *next;
};
link reverse(link x)
{
if( NULL==x )
return NULL;
link t=NULL;
link r=NULL, y=x; //(0)
while(y!=NULL)
{
t = y->next; //(1)
y->next = r; //(2)
r = y; //(3)
y = t; //(4)
}
return r; //返回逆置后的链表
}
(二)原理
(0)(1)(2)(3)(4)分别对应以上程序的各序号
第一次while循环
-------------------------------------------
(0) ......
单向链表的插入、查找和遍历方法(2006-03-25 15:23:00)
摘要:#include<stdio.h>
#include<conio.h>
#define N 3
int Link_Length = N; //记录链表的长度
//定义结构体
struct t_node
{
int data;
struct t_node *next;
};
定义别名
typedef struct t_node Node;
//定义链表变量
Node * example_link = NULL;
/*
*功能:获取指定位置的节点的地址
*输入:plink=链表,i=索引位置,从零开始
*输出:无
*返回值:索引节点的地址
*/
Node * get(Node *plink,int i)
{
if(NULL == plink)
return NULL;
int count = 0;
Node * pNext = plink;
while(count<i && pNext != NULL)
{
count++;
pNext = pNext->next;
}
return pNext;
}//endget()
/*
*功能:向指定链表中的指定位置前插入节点
*输入:plink=链表,x=新节点的值,i=插入位置
*输出:plink=插入节点后的新链表
*返回值:成功返回true, 否则为false
*/
bool Insert(Node *&plink,int x,int i)
{
Node *s = NULL; //新节点
Node *q = NULL; //中间变量
//构建新节点
&nb......
关于双向链表的一些分析(2006-03-25 14:59:00)
摘要:跟大家门交流一下:
一、插入操作(insert)
(一)基本原理
双链表就好像是手拉手站成一排的人,每个人的右手(next)拉着下一个人,左手(prior)拉着前一个人,每两个人之间有两支手互联.插入操作实际是向队伍中增加人员,他需要拉上左右两边的人,即共三个人要发生关系,由于每两个人之间有两支手互联,所以要发生4次操作.如已知节点
q,p,需插入s,(称为原型吧).
----------------------------------
q->next
--->
q p
<---
p->prior
---------------------------------
现在假设需插入节点s,则需进行以下4次操作:
-----------------------------------------
(1)(2)完成q与s的握手
(1) q->next = s;
(2) s->prior = q;
q->next
--->
q s
<---
s->prior
......