当前位置:文档之家› 数据结构-栈代码

数据结构-栈代码

数据结构-栈代码
数据结构-栈代码

栈——代码实现

//定义顺序表:

#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);

}

相关主题
文本预览
相关文档 最新文档