| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 264 人关注过本帖
标题:请教数据结构
取消只看楼主 加入收藏
xdh0817
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:193
专家分:195
注 册:2011-10-20
结帖率:92.86%
收藏
 问题点数:0 回复次数:0 
请教数据结构
#include<stdio.h>
#include<stdlib.h>
#define stackmaxsize 100
#define stackincert 10
typedef struct
{
  char *top;   
  char *base;
  int stacksize;
}Stack;
int Stackinit(Stack *s)
{
 s->base=(char*)malloc(stackmaxsize*sizeof(char));
 if(s->base==NULL) exit(1);
 s->top=s->base;   
 s->stacksize=stackmaxsize;
 return 0;
}
int push(Stack *s,char ch)
{
 if(s->top-s->base>=s->stacksize)
 {
 s->base=(char*)realloc(s->base,(s->stacksize+stackincert)*sizeof(char));   
 if(s->base==NULL) return 1;
 s->top=s->base+s->stacksize;
 s->stacksize+=stackincert;
 }
 *(s->top++)=ch;
return 0;
}
int pop(Stack *s,char *ch)
{
 if(s->top==s->base) return 1;
 *ch=*(--s->top);
    return 0;
}
int empty(Stack s)
{
 if(s.top==s.base) return 0;   
    else return 1;
}
int Stackclear(Stack *s)
{
s->top=s->base;
*(s->top)=NULL;
return 0;   
}
int destroystack(Stack *s)
{
 free(s->base);   
 *(s->base)=NULL;
 return 0;
}
int main()
{
 Stack s;
 char ch1,ch2;
 Stackinit(&s);
 ch1=getchar();
 push(&s,ch1);
 ch1=getchar();
 while(ch1!='-')
 {
 switch(ch1)
 {
 case '#': pop(&s,&ch2);break;   
 case '@': Stackclear(&s);break;
 default:push(&s,ch1);break;
 }   
 ch1=getchar();
 }
 /*while(empty(s))
 {
  pop(&s,&ch3);
  putchar(ch3);   
 }*/
 while(s.base<s.top)
 putchar(*(s.base++));   
 
// destroystack(&s);
 return 0;
}

栈的清空与销毁时这样用吗?还有我的*(s->base)=NULL出现警告,怎么改一下?
//************************


[ 本帖最后由 xdh0817 于 2011-12-29 16:44 编辑 ]
搜索更多相关主题的帖子: include return 
2011-12-29 15:22
快速回复:请教数据结构
数据加载中...
 
   



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

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