当前位置:文档之家› 顺序栈的C语言程序

顺序栈的C语言程序

《数据结构
实验
学生学号
学生姓名
系别Biblioteka 数学系专业班级实验报告
目的要求
了解和掌握顺序栈的基本知识及操作要领,明白栈顶栈底等的概念,可以熟练上机调试运行程序
实验内容
学习顺序表的数据类型,数据结构,基本算法及相关应用
程序代码
#include<stdio.h>
#include<stdlib.h>
#include<LIMITS.H>
{
Push(s,a[i]);
}
printf("重新压栈后弹出栈顶元素:\n");
for (i=0;i<10;i++)
{
if(Pop(s,&x))
printf("%d\n", x);
}
Clear(s);
free(s);
return 0;
}
实验存在的问题及处理
1在写主函数时,如果是用void main的形式,那么可以不用有返回值,如果是int main或|status main的话,要有返回值,既末尾要有return语句。
s->e[s->len++]=a;
s->top ++;
return true;
}
else
{
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 Insert(Stack* s, elem_type a, int pos)
{
if(!s) return false;
if(s->len == s->capacity)
return false;
if(pos<0||pos>s->len)
return false;
int x;
if(s->len==0){
{
s->e[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 || s->e==s->top)
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;
}
bool Del(Stack *s, int pos, elem_type*x)
{
if(Empty(s)) return false;
if(pos>s->len-1 || pos < 0 ) return false;
*x=s->e[pos];
int i=pos;
while(i<s->len-1)
return (-1);
}
for (int i=0;i<10;i++)
{
Insert(s,a[i],0);
}
int x;
printf("依次删除栈底元素:\n");
for (i=0;i<10;i++)
{
Del(s,0,&x);
printf("%d\n",x);
}
printf("再次压栈:\n");
for (i=0;i<10;i++)
2在做表达式的计算的时候一定要注意何时入栈何时出栈。如果入栈与出栈的情况判断不清楚就无法得出答案。
总结
通过编写程序任意输入栈长度和栈中的元素值,构造一个顺序栈,对其进行清空、销毁、入栈、出栈以及取栈顶元素操作,我学会了如何操作和实现顺序栈,对编程有了更加深入的了解。
s->top = s->e;
}
return s;
}
bool Empty(Stack *s)
{
if(!s)
return true;
else
return s->len==0;
}
bool Full(Stack *s)
{
if(!s) return true;
return s->len == s->capacity;
{
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("创建栈失败,可能内存空间不够!\n");
typedef int elem_type;
typedef struct {
elem_type *e,*top;
int len;
int capacity;
}Stack;
Stack* Build(int maxlen)
{
if(maxlen<0 || maxlen>INT_MAX) return NULL;
return false;
else
{
*x = *(--s->top);
s->len--;
return true;
}
}
void Push(Stack *s, elem_type x)
{
if(Full(s)) return;
*(s->top++) = x;
s->len++;
}
void Clear(Stack *s)
相关主题