2012年5月22日

链表的倒序算法

摘要: 基本思路1:pNext=p->next;p->next=pFormer;pFormer=p;p=pNext;算法: 1 LinkNode function(LinkNode LN){ 2 LinkNode p=LN; 3 LinkNode pFormer=NULL,pNext; 4 while(p!=NULL){ 5 pNext=p->next; 6 p->next=pFormer; 7 pFormer=p; 8 p=pNext; 9 }10 return pFormer;11 }基本思路2... 阅读全文

posted @ 2012-05-22 22:50 为梦飞翔 阅读(4968) 评论(0) 推荐(0)

二叉树层次遍历算法+非递归

摘要: 基本思路:(1)若树节点非空,则入队。(2)把对头的左右节点入队(非空),出队(并输出结果)(3)重复步骤(2)直到对为空算法: 1 void LayerTraverse(BinTree BT){ 2 Queue Q; 3 BinTree p=BT; 4 if(p!=NULL){ 5 EnQueue(Q,p); 6 } 7 while(!IsEmpty(Q)){ 8 p=DeQueue(Q); printf("%c",p->data);9 if(p->lchild!=NULL) 10 ... 阅读全文

posted @ 2012-05-22 22:25 为梦飞翔 阅读(5705) 评论(0) 推荐(0)

二叉树的深度,递归和非递归实现

摘要: 递归实现基本思想:为了求得树的深度,可以先求左右子树的深度,取二者较大者加1即是树的深度,递归返回的条件是若节点为空,返回0算法:1 int FindTreeDeep(BinTree BT){2 int deep=0;3 if(BT){4 int lchilddeep=FindTreeDeep(BT->lchild);5 int rchilddeep=FindTreeDeep(BT->rchild);6 deep=lchilddeep>=rchilddeep?lchilddeep+1:rchilddeep+1;7 ... 阅读全文

posted @ 2012-05-22 20:57 为梦飞翔 阅读(30193) 评论(0) 推荐(7)

二叉树的后续非递归遍历

摘要: void TraverseTree(BTree BT){ StackTree S; StackTag tag; BTree p=BT; while (p!=NULL||!IsEmpty(S)) { while (p) { push(S,p); push(tag,0); p=p->pLchild; } if (Top(S)->pRchild==NULL||Top(tag)==1) { BTree temp=P... 阅读全文

posted @ 2012-05-22 17:54 为梦飞翔 阅读(1288) 评论(0) 推荐(1)

二叉树的中序非递归算法

摘要: View Code 1 typedef struct Node{2 DataType data;3 struct Node *lchild,*rchild;4 }BinNode;5 typedef BinNode* BinTree; 1 void MidOrder(BinTree BT){ 2 stack s; 3 BinTree* p=BT; 4 while(p!=NULL||!isEmpty(s)){ 5 if(NULL!=p){ 6 push(s,p);//进栈 7 p=p->lchi... 阅读全文

posted @ 2012-05-22 17:08 为梦飞翔 阅读(109) 评论(0) 推荐(0)

二叉树的前序非递归遍历算法

摘要: 1 typedef struct node{2 DataType data;3 struct node * lchild,*rchild;4 }BinTNode;//节点类型5 typedef BinTNode* BinTree;void PreOrder(BinTree BT){ stack s; BinTree p=BT; while(p!=NULL||!isEmpty(s)) { if(p!=null){ printf("%c",p->data); push(s,p); p=p->lchild; }else{... 阅读全文

posted @ 2012-05-22 16:45 为梦飞翔 阅读(152) 评论(0) 推荐(0)

导航