职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 2970|回复: 12

一个难倒众位高手的程序

[复制链接]
weisheng 发表于 2006-12-5 21:56 | 显示全部楼层 |阅读模式
以下程序看似没什么错误,但是不能运行,你能找出其中的错误吗?

以下用 vc 6.0运行

#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#include <iostream.h>
#include <stdlib.h>


typedef struct{
        int number;
        char name[20];
}Node;


typedef struct{
        Node *base;
        Node *top;
        int stacksize;
}SqStack;

void Initstack(SqStack &s){
        s.base=(Node*)malloc(STACK_INIT_SIZE*sizeof(Node));
        if(!s.base){cout<<\"data error!\";exit(0);}
        s.top=s.base;
        s.stacksize=STACK_INIT_SIZE;
        cout<<\"init success!\"<<endl;
        return;
}

void GetTop(SqStack s,Node &e){
        if(s.top==s.base){cout<<\"stack is empty!datd error!\";exit(0);}
        e=*(s.top--);
        return;
}

void Push(SqStack &s,Node e){
        if(s.top-s.base+1>=s.stacksize){
                s.base=(Node*)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(Node));
                if(!s.base){cout<<\"realloc error!\";exit(0);}
                s.top=s.base+s.stacksize;
                s.stacksize+=STACKINCREMENT;
        }
        *s.top=e;
        s.top++;
        return;
}

void Pop(SqStack &s,Node &e){
        if(s.top==s.base){cout<<\"stack is empty!error!\";exit(0);}
        e=*(--s.top);
        return;
}

void DestroyStack(SqStack &s){
        free(s.base);
        s.base=NULL;
        s.top=NULL;
        s.stacksize=0;
        cout<<\"destroy success!\"<<endl;
        return;
}

void ClearStack(SqStack &s){
        s.top=s.base;
        cout<<\"clear success!\"<<endl;
        return;
}

bool StackEmpty(SqStack s){
        if(s.top==s.base)return true;
        else return false;
}

void print(SqStack s){
        Node *p;
        for(p=s.base;p<s.top;p++){
                cout<<p.number<<\'\\t\'<<p.name<<endl;
        }
        cout<<\"total:\"<<s.top-s.base;
        return;
}

int StackLength(SqStack s){
        return s.top-s.base;
}

void main(){
        SqStack s;
        Node e;
        Initstack(s);
        cout<<\"input number:\"<<endl;
        cin>>e.number;
        while(e.number!=0){
                cout<<\"input name:\"<<endl;
                cin>>e.name;
                Push(s,e);
                cout<<\"input number!\"<<endl;
                cin>>e.number;
        }
        print(s);
        Pop(s,e);
        cout<<e.number<<\'\\t\'<<e.name<<endl;
        print(s);
        GetTop(s,e);
        cout<<e.number<<\'\\t\'<<e.name<<endl;
        ClearStack(s);
        DestroyStack(s);
        return;
cayean 发表于 2006-12-6 11:19 | 显示全部楼层
::11:: 不懂!!!
zlyuanna 发表于 2006-12-6 18:06 | 显示全部楼层
::5::
 楼主| weisheng 发表于 2006-12-8 17:05 | 显示全部楼层
唉。。
feiguo 发表于 2011-6-1 14:25 | 显示全部楼层
鲤鱼和乌龟去领结婚证。办事员问乌龟年龄,乌龟说:100。办事员遗憾地说:对不起,按照你们家族规定,你还未成年,不准结婚。   
月上萧萧 发表于 2011-7-16 12:48 | 显示全部楼层
哈哈 瞧你说的~~~
broken 发表于 2011-7-18 09:47 | 显示全部楼层
终于看完了~~~
yoyo 发表于 2011-7-27 09:54 | 显示全部楼层
呵呵 大家好奇嘛 来观看下~~~~
郁闷小男人 发表于 2011-7-27 09:54 | 显示全部楼层
我赞成。嘿嘿
broken 发表于 2011-7-31 10:16 | 显示全部楼层
…没我说话的余地…飘走
月上萧萧 发表于 2011-8-2 11:13 | 显示全部楼层
这是怎么了啊??
郁闷小男人 发表于 2011-8-3 12:03 | 显示全部楼层
呵呵 那是啊~~
月上萧萧 发表于 2011-8-3 12:03 | 显示全部楼层
宁死不屈.....
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-3-29 09:37 , Processed in 0.133137 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表