数据结构复习——线性表(三)栈

来源:互联网 发布:js获取option选中的值 编辑:程序博客网 时间:2024/06/05 23:40

栈的顺序存储结构

/***顺序栈及其相关操作*/# include <stdio.h># include <malloc.h># define MAXSIZE 20typedef struct stack * pStack;struct stack{int data[MAXSIZE];int top;//指示栈顶元素index};//初始化一个空栈pStack init(){pStack p = (pStack)malloc(sizeof(struct stack));p->top = -1;//没有任何元素return p;}//入栈void push(pStack p, int target){if(p->top == MAXSIZE -1){printf("栈满!");return;}else{p->data[++p->top] = target;//元素入栈,top值+1}}//出栈int pop(pStack p){int val;if(p->top == -1){printf("栈空!");return NULL;}else{val = p->data[p->top--];//先让它出栈再让top值-1return val;}}//获取栈顶元素int getTop(pStack p){return p->data[p->top];}//遍历一个栈void print(pStack p){int val = 0;//存放指针指向的值int pos = p->top;//遍历指针while(pos != -1){val = p->data[pos--];printf("%d ", val);}printf("\n");}//testint main (void){pStack p = init();for(int i = 0; i < MAXSIZE; i++)push(p,i);print(p);for(i = 0; i < MAXSIZE; i++)pop(p);for(i = 0; i < MAXSIZE; i++)push(p,i);print(p);return 0;}


0 0
原创粉丝点击