| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1049 人关注过本帖
标题:再来一道,快疯了我!!
只看楼主 加入收藏
LegendofMine
该用户已被删除
收藏
 问题点数:0 回复次数:8 
再来一道,快疯了我!!
提示: 作者被禁止或删除 内容自动屏蔽
搜索更多相关主题的帖子: include 
2010-06-03 20:46
小依
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-4-24
收藏
得分:0 
我是新手,不好意思,只是问下.
return 返回数据,这个数据可以是结构吗(不用指针的情况下)?
2010-06-14 11:42
LegendofMine
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-06-15 13:31
小依
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-4-24
收藏
得分:0 
它一般不是只能返回单个数据么?
2010-06-15 21:46
佳嘉
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:534
专家分:1383
注 册:2009-11-8
收藏
得分:0 
能运行呀
2010-06-15 22:35
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
楼主啊,编程的时候注意加注释,没注释的程序看这太费劲了

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2010-06-21 11:05
aitajiujiage
Rank: 2
等 级:论坛游民
帖 子:21
专家分:34
注 册:2010-5-10
收藏
得分:0 
大哥 你这个程序小弟实在是看的不太清楚,能否加一个注解啊?
不过我可以发一个经典的例子给你,不过这个程序,没有使用递归调用,这个程序的功能可强大了,希望对你有启发:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20
#include <conio.h>
typedef struct btnode
    {
    char cdata;
    struct btnode *lchild,*rchild;
    }BTNode;
    int count,deep;
    BTNode *Create_BiTree2()
    { BTNode  *t;          char c;
      c=getchar();
      if(c=='.')   return(NULL);
     else{
             t=(BTNode *)malloc(sizeof(BTNode));
             t->cdata=c;
             t->lchild=Create_BiTree2();
             t->rchild=Create_BiTree2();
    }
     return(t);
  }
void Preorder2(BTNode *bt)   
 {
    BTNode * p=bt,*s[MAXSIZE]; int top=-1;
    while(p||top>-1)
      {  if(p)                        
        { printf("%c",p->cdata);      
          ++top ;s[top]=p;        
          p=p->lchild ;   }        
        else                        
          {  p=s[top] ;--top ;   
             p=p->rchild ;     }   
          }
    }
void Inorder2(BTNode *bt)   
  {
    BTNode * p=bt,*s[MAXSIZE]; int top=-1;
    while(p||top>-1)
        {  if(p)                        
           { ++top ;s[top]=p;      
              p=p->lchild ;   }     
           else                        
             {  p=s[top] ;
                printf("%c",p->cdata);      
                --top ;     
               p=p->rchild ;     }   
           }
      }
int Postorder2(BTNode *T)   
{  BTNode *p,s[MAXSIZE];
     int s2[MAXSIZE],top=0,mark;
     p=T;
     do
     { while(p!=NULL)
        { s[top]=*p; s2[top++]=0;  p=p->lchild; }
         if(top>0)
           { mark=s2[--top];  *p=s[top];
             if(mark==0)         
             { s[top]=*p;s2[top++]=1;
                p=p->rchild;
              }
            else
             { printf("%c",p->cdata);   
               p=NULL;  }
          }
     }while(top>0);
    return 1;
}
void Node_Count(BTNode *T)
{
   if(T)
       {
         count++;  
         Node_Count(T->lchild);
         Node_Count(T->rchild);
       }
   }/* Node_Count*/
void Leaf_BiTree(BTNode *T,int j)   
{
  if(T)
   {
     if(T->lchild==NULL && T->rchild==NULL)
       { printf("%c\n",T->cdata);
         count++;
       }
      j++;
      if(deep<j)  deep=j;
      Leaf_BiTree(T->lchild,j);
      Leaf_BiTree(T->rchild,j);
   }
}
void  Exchange(BTNode *bt)
{
    if(bt)
    {   BTNode *p;
         p=bt->lchild;
         bt->lchild=bt->rchild;
         bt->rchild=p;
         Exchange(bt->lchild);
         Exchange(bt->rchild);
          }
}
 main()
  {
     int i=1;
     BTNode *t;
     textcolor(GREEN);
     textbackground(RED);
     clrscr();
  t=Create_BiTree2();
 while(1)
  {
    printf("\n");
    printf("请选择操作:\n");
    printf("1:  二叉树的前序遍历\n");
    printf("2:  二叉树的中序遍历\n");
    printf("3:  二叉树的后序遍历\n");
    printf("4:  求二叉树的结点数\n");
    printf("5:  求二叉树的叶子结点及树的深度\n");
    printf("6:  二叉树左右子树的交换\n");
    printf("7:  返回输入二叉树界面\n");
    printf("0:  退出程序\n");
    scanf("%d",&i);
    switch(i)
     {
      case 0: printf(" 程序退出!\n ");exit(0);
      case 1:clrscr(); printf("前序遍历结果:\n"); Preorder2(t);
      break;
      case 2:clrscr();  printf("中序遍历结果:\n"); Inorder2(t);
      break;
      case 3: clrscr(); printf("后序遍历结果:\n"); Postorder2(t);
           break;
      case 4: clrscr(); count=0;
                Node_Count(t);
                printf("二叉树结点的个数是%d",count,"\n");
               break;
      case 5: clrscr(); printf("叶子结点为:\n");
               deep=count=0;
               Leaf_BiTree(t,count);
               printf("树叶结点数为:%d",count);
               printf("\n树的深度为:%d",deep);
               break;
      case 6: clrscr(); Exchange(t);
         printf("左、右子树已交换成功!:");
         printf("\n前序遍历序列为:");Preorder2(t);
         printf("\n中序遍历序列为:");Inorder2(t);
         printf("\n后序遍历序列为:");Postorder2(t);
         break;
      case 7:return main();break;
      default : printf("\n输入无效,请重新选择操作!\n" );break;
   }
  }
}
2010-06-28 13:59
LegendofMine
该用户已被删除
收藏
得分:0 
回复 6楼 waterstar
提示: 作者被禁止或删除 内容自动屏蔽
2010-06-28 16:56
hao0716
Rank: 4
等 级:业余侠客
威 望:1
帖 子:353
专家分:222
注 册:2006-4-11
收藏
得分:0 
以下是引用小依在2010-6-14 11:42:23的发言:

我是新手,不好意思,只是问下.
return 返回数据,这个数据可以是结构吗(不用指针的情况下)?
不用指针是不可以的
当然如果你定义成struct {char a[4];};这样是可以的...

2010-07-09 20:28
快速回复:再来一道,快疯了我!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028465 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved