数据结构第二版(朱昌杰版)栈和队列三(链式存储 栈)
链式存储:使用指针进行存储方式进行栈的各种方式
由于前面写过基本操作方式,这里我就不再进行描述基本操作,直接开始
结构体定义
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);}}
后续周末接着其应用,简单表达式求值和括号匹配检验
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
