数据结构第二版(朱昌杰版)栈和队列三(链式存储 栈)

链式存储:使用指针进行存储方式进行栈的各种方式
由于前面写过基本操作方式,这里我就不再进行描述基本操作,直接开始
结构体定义

typedef struct Stack{int data;struct  Stack *next;
}SqStack,*LinkStack;
LinkStack top;

初始化栈

int InitStack(SqStack &S){top=NULL;
}

判断空

int EmptyStack(LinlStack top){return ( top==NULL?TRUE:FALSE;)
}

进栈

void PushStack(LinkStack &top, Datatype e ){SqStack *p;p=(LinlList)malloc(sizeof(SqStack));p->data=e;p->next=top;top=s;
}

出栈

intPopStack(LinkStack &top,Datatype &e){Stack *p;if(StackEmpty(top)==NULL) return ERROE;p=top;e=top->data;top=top->next;free(p);return OK;
}

栈的应用
首先是数制转换
对于任何一个数值转换成相对应的数值而言,每次压栈保存数据进入栈内

typedef int Datatype
void conversion (int N,int r){Sqstack S;Datatype x;initStack(S);//入栈while(N){Push(S,N%r);N=N/r;}//pop出栈while(!StackEmpty(S)){Pop(S,x);printf("%d",x);}}

后续周末接着其应用,简单表达式求值和括号匹配检验


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部