| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 409 人关注过本帖
标题:请教一个数据结构中栈的问题,用C编的
只看楼主 加入收藏
王志鹏
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2010-5-18
收藏
 问题点数:0 回复次数:1 
请教一个数据结构中栈的问题,用C编的
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
typedef struct STACK{
 int *base;
 int *top;
 int stacksize;
 
}sqstack;
typedef struct LNode{
 int data;
 struct LNode *next;
}LNode,*linklist;
sqstack Build(sqstack *s){
 s->base=malloc(100*sizeof(int));
 s->top=s->base;
 s->stacksize=100;
 return *s;
}
int GetTop(sqstack *s ,int e){
 if(s->top==s->base)
  exit (0);
 e=*(s->top-1);
 return e;
};
void push(sqstack *q,int e){
 if (q->top-q->base==q->stacksize)
 {
  q->base=malloc((q->stacksize+10)*sizeof(int));
  if(!q->base)exit;
  q->top=q->base+q->stacksize;
  q->stacksize+=10;
  
 }
 *q->top++=e;
}
void pop(sqstack *q,int e){
 if (q->base==q->top)
 {
  exit;
 }
 e=*--q->top;
}
main()
{
 int a[256];
 int n;
 int i=0;
 int j=0;
 int e;
 sqstack *S;
 Build(S);
 S->top=-1;
 printf("input n:");
 scanf("%d",&n);
 
 for(i=0;i<n;i++)
 {
  printf("input a[%d]",i);
  scanf("%d",a[i]);
  push(S,a[i]);
 }
 while (S->base!=S->top)
 {
  pop(S,e);
  printf("%d",e);
 }
}
这段代码,编译连接没有问题,但是一运行就出错,类似的程序写了好几个了,都是类似情况,头疼,求教~
搜索更多相关主题的帖子: 数据结构 
2010-05-18 17:11
husiwen
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:227
专家分:1125
注 册:2010-5-23
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>

#define maxs 8
#define add  8

typedef struct
{        
    int *base;
    int *top;
    int stacksize;
}stack;

void initstack(stack &s)
{
    s.base=(int *)malloc(maxs*sizeof(int));
    if(!s.base) exit(0);
    s.top=s.base;
    s.stacksize=maxs;
}
//void gettop(stack s,char &e)
//{
//   if(s.base==s.top) return;
//   e=*(s.top-1);
//}
void push(stack &s,char e)
{
    if(s.top-s.base>=s.stacksize)
    {
        s.base=(int *)realloc(s.base,(s.stacksize+add)*sizeof(int));
        if(!s.base) exit(0);
        s.top=s.base+s.stacksize;
        s.stacksize+=add;
    }
    *s.top++=e;
}
void pop(stack &s,char &e)
{
    if(s.base==s.top) return;
    e=*--s.top;
}
void main()
{
    stack s,ss;
    char ch,c;
    initstack(s);
    initstack(ss);
    scanf("%c",&ch);

   
        while(ch!='\n')
        {   
            switch(ch)
            {
            case '#':pop(s,c);break;
            default :push(s,ch);break;
            }
        scanf("%c",&ch);
        }
    while(s.base!=s.top)
    {   
        pop(s,c);
        push(ss,c);
    }

    while(ss.base!=ss.top)
    {
        pop(ss,c);
        printf("%c",c);
    }
以前编的一个#号键退格的代码,给你对比参考下
2010-07-07 16:34
快速回复:请教一个数据结构中栈的问题,用C编的
数据加载中...
 
   



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

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