博文
[转载]两个人的世界,就是天堂……(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 100typedef 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 ;}void insert(btree &b,bnode *s)//向树中插入结点{ if(b==NULL) b=s; els......
数组与链表等顺序表逆置(2006-03-27 14:09:00)
摘要:一)数组的逆置(1)算法#indclude<stdio.h>#define N 8main(){ 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)算法//定义结构体struct t_node{ int data; struct t_node *next;};//定义别名typedef struct&......
单链表逆置(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) r=NULL, y=xr=NULL a ---> b &nbs......
单向链表的插入、查找和遍历方法(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; //中间变量
//构建新节点 s = (node *)malloc( sizeof(node) ); if( s == NULL ) return false; &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
-----------------------------------------(3)(4)完成s与p的握手 ......
