| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1038 人关注过本帖
标题:严蔚敏 吴伟明 数据结构 栈的基本操作实现
只看楼主 加入收藏
jaq1318707
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-4-21
收藏
 问题点数:0 回复次数:1 
严蔚敏 吴伟明 数据结构 栈的基本操作实现
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>

#define STACK_INIT_SIZE 10
#define STACKIMCREMENT 2
typedef struct {
    int  *base;
    int  *top;
    int stacksize;
}sqstack;

void initstack(sqstack *s)
{s->base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
 if(!s->base)  exit(0);
 s->top=s->base;
 s->stacksize=STACK_INIT_SIZE;
}

void destroystack(sqstack *s)
{if(!s->base)  exit(0);
 free(s->base);
 s->top=s->base=NULL;
 s->stacksize=0;
}

void clearstack(sqstack *s)
{if(!s->base) exit(0);
 s->top=s->base;
}

int stackempty(sqstack s)
{if(s.top==s.base) return 1;
 else return 0;
}
int stacklength(sqstack s)
{return s.top-s.base;
}

void gettop(sqstack *s,int *e)
{if(s->base==s->top)  return;
 *e=*(s->top-1);
}

void push(sqstack *s,int e)
{if(s->base-s->top>=s->stacksize)
{s->base=(int*)realloc(s->base,(s->stacksize+STACKIMCREMENT)*sizeof(int));
 if(!s->base)  exit(-2);
 s->top=s->base+s->stacksize;
 s->stacksize+=STACKIMCREMENT;
}
*s->top++=e;
}

void pop(sqstack *s,int *e)
{if(s->base==s->top) return;
 *e=*--s->top;
}

void stacktraverse(sqstack s)
{printf("----------------------------------\n");
 while(s.top>s.base)
{printf("%3d",*s.base++);}
 printf("\n");
 printf("----------------------------------\n");
}

main()
{sqstack s;
 int i,e;
 initstack(&s);
 for(i=1;i<=12;i++)
     push(&s,i);
stacktraverse(s);
pop(&s,&e);
printf("pop top data:e=%d, stack empty?%2d\n",e,stackempty(s));
stacktraverse(s);
/*gettop(&s,&e);
printf("stack top data:e=%d,stacklength:%d\n",e,stacklength(s));
printf("----------------------------------\n");
printf("after clearstack\n");
clearstack(&s);
printf("stackempty?:%d\n",stackempty(s));
printf("----------------------------------\n");
printf("after destroystack\n");
destroystack(&s);
printf("s.top=%u,s.base=%u,stacksize=%d\n",s.top,s.base,s.stacksize);*/

}
搜索更多相关主题的帖子: 严蔚敏 数据结构 吴伟明 
2010-05-14 11:41
smart819819
Rank: 2
等 级:等待验证会员
帖 子:3
专家分:10
注 册:2010-6-8
收藏
得分:0 
谢谢啦
2010-06-08 16:31
快速回复:严蔚敏 吴伟明 数据结构 栈的基本操作实现
数据加载中...
 
   



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

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