本文共 1122 字,大约阅读时间需要 3 分钟。
#include<stdio.h>
#include<malloc.h>typedef struct Lnode{
int data; struct Lnode *next;}Lnode,*LinkStack;//定义链栈void InitStack(LinkStack &s)
{ s=(LinkStack)malloc(sizeof(Lnode)); s->next=NULL; printf("请输入6个栈元素:"); scanf("%d",&s->data); for(int i=0;i<5;i++) { LinkStack p=(LinkStack)malloc(sizeof(Lnode)); scanf("%d",&p->data); p->next=s; s=p;//s指向栈顶,随元素个数的变化而改变 }}//初始化栈int StackEmpty(LinkStack s)
{ if(s==NULL) return 1;//栈空 else return 0;}//判断链栈是否为空void Pop(LinkStack &s, int &e)
{ if(!s) printf("error/n"); e=s->data; LinkStack p=s; s=s->next; free(p);}//删除链栈中的元素void Print(LinkStack s)
{ while(!StackEmpty(s)) { int e; Pop(s,e); printf("%d ",e); }}//输出栈中元素void Push(LinkStack &s, int e)
{ LinkStack p=(LinkStack)malloc(sizeof(Lnode)); p->data=e; p->next=s; s=p;//指向栈顶元素}//向栈顶插入元素void GetTop(LinkStack s,int &e)
{ if(!s) printf("error1/n"); e=s->data;}//取栈顶元素int StackLength(LinkStack s)
{ int j=0; while(s) { s=s->next; j++; } return j;}//求链栈的长度main()
{ int a; int b; LinkStack s; InitStack(s); GetTop( s,a); Push(s,99); b=StackLength(s); Print(s); printf("栈顶元素:%d",a); printf("栈的长度:%d",b); return 0;}
转载地址:http://scmvi.baihongyu.com/