栈——代码实现
//定义顺序表:
#include
#define MAXLEN 10
typedef int ElementType;
typedef struct
{
ElementType data[MAXLEN];
int top;
}SqStack;
//建空栈
SqStack InitStack()
{ SqStack s;
s.top=-1;
return(s);
}
//取栈顶元素,并用*x返回栈顶元素
int GetTopStack(SqStack *s,ElementType *x)
{
if(s->top==-1)
return(0);
else
{ *x=s->data[s->top];
return(1);
}
}
//输出栈
void PrintStack(SqStack s)
{
int i;
if(s.top!=-1)
{
printf("输出栈内的元素为:");
for(i=0;i<=s.top;i++)
printf("%3d",s.data[i]);
}
else
printf("此栈为空栈!");
printf("\n");
}
//进栈
int PushStack(SqStack *s,ElementType x)
{
if(s->top==MAXLEN-1)
return(0);
s->top++;
s->data[s->top]=x;
return(1);
}
//出栈,删除s的栈顶元素,并用*x返回栈顶元素int PopStack(SqStack *s,ElementType *x)
{ if(s->top==-1)
return(0);
*x=s->data[s->top];
s->top--;
return(1);
}
//判空栈
int IsEmptyStack(SqStack *s)
{ return(s->top==-1);}
//主程序
int main()
{ SqStack s;
int i ;
ElementType y;
ElementType z;
s=InitStack();
printf("请输入个数:\n");
for(i=1;i<=5;i++)
{ scanf("%d",&y);
PushStack(&s,y); }
PrintStack(s);
GetTopStack(&s,&z);
printf("栈顶元素为:%d",z);
printf("出栈个元素:");
for(i=1;i<=3;i++)
{ PopStack(&s,&z);
printf("%3d",z); }
printf("\n");
PrintStack(s);
}
栈——代码实现
#include
#include "malloc.h" //使用malloc标识符必须加此代码typedef int ElementType;
typedef struct node
{
ElementType data;
struct node *next;
}NODE;
//建一个空栈
NODE *CreateSqStackLink()
{
NODE *s;
s=(NODE *)malloc(sizeof(NODE));
s->next=0;
return(s);
}
//进栈
void PushSqStackLink(NODE *s,ElementType x)
{
NODE *p;
p=(NODE *)malloc(sizeof(NODE));
p->data=x;
p->next=s->next;
s->next=p;
}
//输出栈
void PrintSqStackLink(NODE *s)
{
NODE *p;
p=s->next;
if(p!=NULL)
{
printf("输出栈的元素为:");
while(p!=NULL)
{
printf("%3d",p->data);
p=p->next;
}
}
else
printf("此栈为空!");
printf("\n"); }
//出栈
int PopSqStackLink(NODE *s)
{
ElementType t;
NODE *p;
p=s->next;
if(p==0)
return(0);
else
{
s->next=p->next;
t=p->data;
free(p);
return(t);
}
}
//主程序
void main()
{
int i,j;
ElementType a;
NODE *s;
s=CreateSqStackLink();
printf("请输入进栈元素个数:");
scanf("%d",&i);
for(j=1;j<=i;j++)
{
printf("请输入第%d个数:",j);
scanf("%d",&a);
PushSqStackLink(s,a);
}
PrintSqStackLink(s);
a=PopSqStackLink(s);
printf("出栈元素为:%d",a);
}