| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 310 人关注过本帖
标题:一个栈的问题
取消只看楼主 加入收藏
hf201089
Rank: 2
等 级:论坛游民
帖 子:48
专家分:25
注 册:2012-3-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
一个栈的问题
程序代码:
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 20
typedef int SElemType;
typedef int Status;
typedef struct

 {
   SElemType *base;
   SElemType *top;
   int stacksize;

 }SqStack;

 

Status initStack(SqStack S)           

 {

 S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));

 if(!S.base) exit(ERROR);

 S.top=S.base;

 S.stacksize=STACK_INIT_SIZE;

 return OK;

 }


 void push_stack_sq(SqStack S,SElemType e)

 {
     if(S.top-S.base>=S.stacksize)
         {
         S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
          if(!S.base)    exit(ERROR);
         S.top=S.base+S.stacksize;
         S.stacksize+=STACKINCREMENT;
        }
     *S.top=e;
    S.top++;   

 }


 void print(SqStack S)

 {  SElemType *p;
     p=S.base;
    while(p<=S.top)
     {
     printf("%d ",*p);
     p++;
     }

 }


 int main()

 {

 SqStack S;

 initStack(S);                   

 push_stack_sq(S,5);

 push_stack_sq(S,4);

 push_stack_sq(S,3);

 print(S);

 }
为什么结果出不来?哪里出错了?
2012-03-21 13:22
hf201089
Rank: 2
等 级:论坛游民
帖 子:48
专家分:25
注 册:2012-3-4
收藏
得分:0 
自己顶下,谁能帮忙看看,谢谢啦!
2012-03-21 15:47
hf201089
Rank: 2
等 级:论坛游民
帖 子:48
专家分:25
注 册:2012-3-4
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 20
typedef int SElemType;
typedef int Status;
typedef struct SqStack

 {
   SElemType *base;
   SElemType *top;
   int stacksize;

 }SqStack;


 SqStack S; 

 SElemType *p; 

Status initStack()

 {

 S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));

 if(!S.base) exit(ERROR);

 S.top=S.base;

 p=S.base;

 S.stacksize=STACK_INIT_SIZE;

 return OK;

 }


 SqStack push_stack_sq(SqStack S,SElemType e)

 {
     if(S.top-S.base>=S.stacksize)
         {
         S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
          if(!S.base)    exit(ERROR);
         S.top=S.base+S.stacksize;
         S.stacksize+=STACKINCREMENT;
        }
     *(S.top)=e;
    (S.top)++;   
     return(S);

 }


 void print(SqStack S)

 {  p=S.base; 
    while(p<=S.top)
     {
     printf("%d ",*p);
     p++;
     }

 }


 int main()

 {

 initStack();

 push_stack_sq(S,5);

 push_stack_sq(S,4);

 push_stack_sq(S,3);

 print(S);

 }
如果是设置全局变量能运行,但结果不是预期结果,这是为什么???
没人能回答一下吗???
2012-03-21 16:59
hf201089
Rank: 2
等 级:论坛游民
帖 子:48
专家分:25
注 册:2012-3-4
收藏
得分:0 
再顶一次
2012-03-21 18:59
hf201089
Rank: 2
等 级:论坛游民
帖 子:48
专家分:25
注 册:2012-3-4
收藏
得分:0 
回复 5楼 silent_world
明白了,非常感谢!
2012-03-21 19:34
快速回复:一个栈的问题
数据加载中...
 
   



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

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