简约设计の艺术

讨论软件制造过程中的艺术与工程,软件哲学

丁亮ID:DL88250
1393250次访问,排名12好友104人,关注者180
Linux、Java、C/C++,OpenSource热爱者,擅长JavaSE/JavaEE开发,熟悉JSF、EJB、Spring、JPA、OSGi等框架应用的架构,目前正在深入学习算法、OOAD、TDD以及敏捷实践。
DL88250的文章
原创 841 篇
翻译 9 篇
转载 161 篇
评论 695 篇
88250的公告





最近评论
DL88250:....
huoyuhan:谢谢
DL88250:: )
fy_kenny:
DL88250:为以后写书作点积累:)
文章分类
收藏
    相册
    Beyond
    壁纸收集
    动漫Kiss图图
    我的珍藏
    我的桌面
    CSDN专家Blog
    孟岩的专栏
    袁萌的专栏
    Ubuntu/Linux相关
    ChinaUnix
    Compiz Themes
    Compiz-Fusion
    deviantART Search
    GetDeb
    Gnome-Look
    KDE-Look
    LinuxToy
    Linux桌面中文网
    Ubuntu中文官方论坛
    Ubuntu桌面中文网
    代码示例
    C++代码示例
    HTML代码示例
    Java Code examples
    技术站点
    Apache Software
    CSDN
    Eclipse.org
    Extreme Programming
    hibernate.org
    IBM软件技术
    JavaFX Home
    JavaFX Script Reference
    JavaWorld@TW
    Java开源大全
    JBoss.org
    LEX & YACC Page
    NetBeans中文社区
    PHP 官方
    Ruby on Rails
    Ruby中文社区论坛
    SOURCEFORGE.NET
    Springframework.org
    Struts Framework
    Sun中国技术社区
    UML官方
    图书下载
    CSDN下载频道
    e 书时空
    IT e Book
    中华电脑书库
    中国 E 书网
    中国 IT 认证实验室
    中文电子书网
    偶要雷锋 - 分享社区
    我爱 e 书
    网络中国 - E 书
    网络上的博友
    吴杰博客
    老李的Blog
    我的偶像 :-)
    Alan Turing
    Bjarne Stroustrup's Homepage
    Don Knuth's Home Page
    Martin Fowler
    Richard Stallman's Home Page
    Uncle Bob (Robert C. Martin)
    我的朋友
    Eleven的专栏
    Eric.Gao的空间
    Meteor的专栏
    mmchsusan的主页
    solonote的专栏
    Vanessa的小窝
    ZhiBaoDeng的专栏
    zyofprogrammer的学习历程
    先知罗庄的专栏
    光光的Blog~
    师傅dorainm的Blog
    皮皮的空间
    秋歌的专栏
    金秋风采
    阿明的专栏
    存档
    订阅我的博客
    XML聚合  FeedSky

    原创 数据结构C语言实现系列[9]——广义表收藏

    新一篇: The first step of Java[7] | 旧一篇: 数据结构C语言实现系列[8]——树

    #include <stdio.h>
    #include 
    <stdlib.h>

    typedef 
    char elemType; 

    /************************************************************************/
    /*                      以下是关于广义表操作的4个简单算法               */
    /************************************************************************/ 
    struct GNode{
        
    int tag;        /* 标志域:取0表示单元素结点;取1时表示子表结点 */
        union{
            elemType data;
            
    struct GNode *subList;
        };
        
    struct GNode *next;        /* 指向后继结点的指针域 */ 
    };  

      

    /* 1.求广义表的长度 */
    int lenthGList(struct GNode *gl)
    {
        
    if(gl != NULL){
            
    return 1 + lenthGList(gl->next);    
        }
    else{
            
    return 0;
        }    


    /* 2.求广义表的深度 */
    int depthGList(struct GNode *gl)
    {
        
    int max = 0;
        
    /* 遍历每个结点,求出所以子表的最大深度 */
        
    while(gl != NULL){
            
    if(gl->tag == 1){
                
    /* 递归求出一个子表的深度 */
                
    int dep = depthGList(gl->subList);
                
    /* 让max始终为同一个所求子表中深度的最大值 */
                
    if(dep > max){
                    max 
    = dep;
                }
            }
            gl 
    = gl->next;     /* 让gl指向下一个结点 */
        }
        
    return max + 1;        /* 返回表的深度 */
    }

    /* 3.建立广义表的存储结构 */
    void creatGList(struct GNode* *gl)
    {
        
    char ch;/* 读入一个字符,此处可能读入'#','(',')',','或者英文字母 */
        scanf(
    "%c"&ch);
        
    /* 若输入为#,则置表头指针为空 */
        
    if(ch == '#'){
            
    *gl = NULL;
        }
        
    /* 若输入左括号则建立由*gl所指向的子表结点并递归构造子表 */
        
    else if(ch == '('){
            
    *gl = malloc(sizeof(struct GNode));
            (
    *gl)->tag = 1;
            creatGList(
    &((*gl)->subList));
        }
        
    /* 若输入为字符则建立由*gl所指向的单元素结点 */
        
    else{
            
    *gl = malloc(sizeof(struct GNode));
            (
    *gl)->tag = 0;
            (
    *gl)->data = ch;
        }
        
    /* 此处读入的字符必为逗号或右括号或分号 */
        scanf(
    "%c"&ch);
        
    /* 若*gl为空,则什么都不做 */
        
    if(*gl == NULL){
            ;
        }
        
    /* 若输入为逗号则递归构造后继表 */
        
    else if(ch == ','){
            creatGList(
    &((*gl)->next));
        }
        
    /* 若输入为右括号或分号则置*gl的后继指针域为空 */
        
    else if((ch == ')'|| (ch == ';')){
            (
    *gl)->next = NULL;
        } 
        
    return;
    }

    /* 4.打印广义表 */
    void printGList(struct GNode *gl)
    {
        
    /* 对于表结点的处理 */
        
    if(gl->tag == 1){
            
    /* 存在子表,先输出左括号 */
            printf(
    "(");
            
    /* 若子表为空,则输出'#'字符 */
            
    if(gl->subList == NULL){
                printf(
    "#");
            }
            
    /* 若子表非表,则递归输出子表 */
            
    else{
                printGList(gl
    ->subList);
            }
            
    /* 当一个子表输出结束后,再输出右括号 */
            printf(
    ")");
        }
        
    /* 对单元素结点,则输出该结点的值 */
        
    else{
            printf(
    "%c", gl->data);
        }
        
    /* 输出该结点的后继表 */
        
    if(gl->next != NULL){
            
    /* 先输出逗号分隔 */
            printf(
    "");
            
    /* 再递归输出后继表 */
            printGList(gl
    ->next);
        }
        
    return;
    }


    int main()
    {
        
    struct GNode *gl;
        printf(
    "输入一个广义表, 以右括号结束 ");
        creatGList(
    &gl);
        printf(
    "输出广义表:");
        printGList(gl);
        printf(
    " ");
        printf(
    "广义表的长度:");
        printf(
    "%d ", lenthGList(gl->subList));
        printf(
    "广义表的深度:");
        printf(
    "%d ", depthGList(gl->subList));
        system(
    "pause");
        
    return 0;    
    }
     

    发表于 @ 2007年01月29日 01:36:00|评论(loading...)|编辑

    新一篇: The first step of Java[7] | 旧一篇: 数据结构C语言实现系列[8]——树

    评论

    #tank123 发表于2007-02-23 20:31:00  IP:
    兄弟,你的BLOG做的太漂亮了,音乐也很动人啊,很好听你在我的BLOG上说自己是个初学者,但我看了看你写的帖子都是我看不懂的,呵呵,你可以当我老师了,希望你多到我的BLOG去指导,那里不光有我的学习心得,还有我的一些心情日记.
    2007-02-24 11:07:50作者回复
    你好吖,我会去的,另外。if (你再来我的Blog &amp;&amp; 看到这贴) {可以看看我写在程序人生里的东西,呵呵;}
    #tank123 发表于2007-02-24 11:50:33  IP: 221.233.94.*
    像玩游戏时的疯狂一样在学习----你真太棒了,真要如此还有什么学不好的呢?你是我的榜样,我要向你看齐啊。谢谢你到我的BLOG参观,很高兴在我刚起步的时候遇见你这样志同道合的人。
    2007-02-24 12:11:40作者回复
    客气了,一起学习一起进步吧!
    #tank123 发表于2007-02-25 21:09:34  IP: 221.233.94.*
    俺发现每次点到你的BLOG里都会给人以美的享受,很舒服的感觉,今天真郁闷,不小心把你给我的回复删除了,你那篇2006年的总结找不到了,对了,你是那里人,你在云南上学,那你是云南人吗?
    2007-02-26 12:27:36作者回复
    嗯,我是云南人,红河州开远的,呵呵。。。。这久Blog在升级,不然你可以点左边的分类->程序人生里找找。。。。
    #tank123 发表于2007-02-25 21:23:45  IP:
    呵呵,刚刚看到你的BLOG在CSDN的首页上了
    “打造最有个性的Blog版面 ”
    2007-02-26 12:28:39作者回复
    呵呵,不过有的人说版本做太花了,不像搞技术的,可是我只知道技术和艺术应该是一家人,不分开才对的!
    #子夜 发表于2008-07-03 15:29:13  IP: 59.41.121.*
    我编译了一下,貌似有问题 = =
    #88250 发表于2008-07-03 18:58:00  IP: 221.213.43.*
    ....
    #uc3240 发表于2008-07-04 00:28:49  IP: 59.41.123.*
    好好学习#108....
    = =
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 88250