顺序栈的C语言程序.doc

顺序栈的C语言程序.doc

ID:51717822

大小:120.50 KB

页数:5页

时间:2020-03-15

顺序栈的C语言程序.doc_第1页
顺序栈的C语言程序.doc_第2页
顺序栈的C语言程序.doc_第3页
顺序栈的C语言程序.doc_第4页
顺序栈的C语言程序.doc_第5页
资源描述:

《顺序栈的C语言程序.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、《数据结构》实验报告书学生学号学生姓名系别数学系专业班级《数据结构》实验报告书学生学号学生姓名系别数学系专业班级实验报告目的要求了解和掌握顺序栈的基本知识及操作要领,明白栈顶栈底等的概念,可以熟练上机调试运行程序实验内容学习顺序表的数据类型,数据结构,基本算法及相关应用程序代码#include #include #include  typedef int elem_type; typedef struct { elem_type *e,*top; int len; int capacity; }Stack;  Stack* Build(

2、int maxlen) { if(maxlen<0 

3、

4、 maxlen>INT_MAX) return NULL; Stack *s = (Stack *)calloc(1, sizeof(Stack)); if(s) { s->e=(elem_type*)calloc(maxlen, sizeof(elem_type)); if(s->e) s->capacity = maxlen; else s->capacity =0; s->top = s->e; } return s; }  bool Empty(Stack *s) { if(!s) return true; else return

5、 s->len==0; }  bool Full(Stack *s) { if(!s) return true; return s->len == s->capacity; }  bool Insert(Stack* s, elem_type a, int pos) { if(!s) return false; if(s->len == s->capacity) return false; if(pos<0

6、

7、pos>s->len) return false; int x; if(s->len==0){s->e[s->len++]=a; s->top ++; return true; } el

8、se { x = ++s->len ; s->top = s->e + s->len;  while(x>pos) { s->e[x] = s->e[x-1]; x--; } s->e[pos] = a; return true; } return false; } bool Del(Stack *s, int pos, elem_type*x) { if(Empty(s)) return false; if(pos>s->len-1 

9、

10、 pos < 0 ) return false;     *x=s->e[pos]; int i=pos; while(ilen-1) { s->e

11、[i] = s->e[i+1]; i++; } s->len--; s->top--; return true; } elem_type Top(Stack *s) { return *(s->top-1); } bool Pop(Stack *s, elem_type *x) { if(!s 

12、

13、 s->e==s->top) return false; else { *x = *(--s->top); s->len--;return true; } }  void Push(Stack *s, elem_type x) { if(Full(s)) return; *(s->top++) = 

14、x; s->len++; } void Clear(Stack *s) { if(s->e) free(s->e); s->len=0; s->e = s->top = NULL; } int main() { int a[10]={0,1,2,3,4,5,6,7,8,9};    Stack *s=Build(100); if(s==NULL){ printf("创建栈失败,可能内存空间不够!"); return (-1); }  for (int i=0;i<10;i++) { Insert(s,a[i],0); } int x; printf("依次删除栈底元素:");  for

15、 (i=0;i<10;i++) { Del(s,0,&x); printf("%d",x); } printf("再次压栈:"); for (i=0;i<10;i++) { Push(s,a[i]); } printf("重新压栈后弹出栈顶元素:"); for (i=0;i<10;i++) { if(Pop(s,&x)) printf("%d", x); } Clear(s); f

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。