線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:755
推到 Plurk!
推到 Facebook!

利用迴路式寫preorder排列出現錯誤...

尚未結案
stactine
一般會員


發表:1
回覆:0
積分:0
註冊:2005-06-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-02 07:32:27 IP:220.131.xxx.xxx 未訂閱
#include #include #include typedef struct node *tree_pointer; typedef struct node{ char data; tree_pointer left_c; tree_pointer right_c; }node; tree_pointer crt_bt() { tree_pointer ptr; char data; printf("Input Node Data:=>"); data=getche(); if (data=='0') return (NULL); ptr=(tree_pointer)malloc(sizeof(node)); ptr->data=data; printf("\nNode Data:%c=>Left\n",ptr->data); ptr->left_c=crt_bt(); printf("\nNode Data:%c=>Right\n",ptr->data); ptr->right_c=crt_bt(); return(ptr); } #define MAX_ITEM 100 typedef struct { int key; }element; tree_pointer stack[MAX_ITEM]; int top=-1; void push(int *top,tree_pointer item) { if(*top == MAX_ITEM-1) { printf("堆疊滿了\n"); exit(1); } stack[ *top]=item; } tree_pointer pop(int *top) { if(*top == -1) { printf("堆疊空了\n"); exit(1); } (stack[*top--]); return; } void iter_preorder(tree_pointer node) { int top=-1; tree_pointer stack[MAX_ITEM]; push(&top,node); for(node=pop(&top);node;node=pop(&top)) { //node=pop(&top); if(!node)break; for(;node;) { printf("%c",node->data); if(node->right_c) push(&top,node->right_c); node=node->left_c; } } } void main() { tree_pointer tree; tree=crt_bt(); printf("\n此樹的前序式排列為:"); iter_preorder(tree); getch(); } 程式是可以執行了...可是印出來的排序會怪怪的..可以請問問題出在哪嗎??
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-02 09:11:11 IP:210.68.xxx.xxx 未訂閱
您好:    PO程式碼的方式請參考版規說明,煩請修改謝謝您的配合 >
系統時間:2024-05-18 5:33:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!