线性表(特殊)-Stack(栈)
1:顺序栈-数组
2:链栈
#define initSize 20 typedef struct stackNode { int data; int lenth; struct stackNode *next; }linkStack;
定义操作初始化栈
int initStack(linkStack &stack) { stack= (linkStack *) malloc(sizeof(linkStack)); if (!stack)return 0; //内存分配失败,存储空间不够 stack.length = 1; return 1; }
入栈 返回栈顶
linkStack *push(linkStack *top,int a) { linkStack *p=(linkStack *)malloc(sizeof(linkStack)); p->data=a; p->next=top; top=p; return top; }
出栈 返回栈顶
linkStack *pop(linkStack *top) { if(top) { linkStack *p=top; top=top->next; printf("弹栈元素:%d ",p->data); if (top) { printf("栈顶元素:%d\n",top->data); }else{ printf("栈已空\n"); } free(p); } else { printf("栈内没有元素"); return top; } return top; }
判断栈是否为空
int isEmptyStack(Stack stack) { return stack.length; }
访问栈顶元素:
取出栈顶元素,传值给形参elem,但不删除栈顶元素。由于采用的是引用的方式,
因此形参值的改变可以传给实参。
int top(Stack stack, int &elem) { if (stack.length == 0)return 0; elem = stack.elem[stack.length - 1]; return elem; }
浙公网安备 33010602011771号