【数据结构课程作业】双向栈

以下是这一次的作业。 Push(0,x)表示插入左栈,,Push(1,x)表示插入右栈。依次类推。

#include <stdio.h>#include <stdlib.h>typedef struct STACK{int *top[2];int *base[2];int *p;}STACK;void InitStack(STACK *s, int m){(*s).p = (int *)malloc(sizeof(int)*m);if(!(*s).p) exit(-1);(*s).base[0] = (*s).top[0] = (*s).p;(*s).base[1] = (*s).top[1] = (*s).p + (m-1);}bool EmptyStack(STACK *s){if((*s).top[0] == (*s).base[0] && (*s).top[1] == (*s).base[1]) return true;return false;}bool OverStack(STACK *s){if((*s).top[0] – (*s).top[1] == 1) return true;return false;}void Push(STACK *s, int d, int x){if(OverStack(s)) {printf(“The stack is full!\n”);return ;}if(d == 0) {*((*s).top[d]) = x;(*s).top[d]++;}else {*((*s).top[d]) = x;(*s).top[d]–;}}void Pop(STACK *s, int d){if(EmptyStack(s)) {printf(“The stack is empty!\n”);return ;}int x;if(d == 0) {(*s).top[0]–;x = *((*s).top[0]);}else {(*s).top[1]++;x = *((*s).top[1]);}printf(“%d\n”, x);}int main(){STACK s;int m;scanf(“%d”, &m);InitStack(&s, m);return 0;}

眼睛可以近视,目光不能短浅。

【数据结构课程作业】双向栈

相关文章:

你感兴趣的文章:

标签云: