typedef struct { int data[maxSize]; //存放栈中的元素 int top; //栈顶指针 }SqStack;
typedef struct LNode { int data; //数据域 int LNode *next;//指针域 }LNode;
typedef struct { int data[maxSize]; int front;//队首指针 int rear; //队尾指针 }SqQueue;
typedef struct QNode { int data; struct QNode *next; //指针域 }QNode;
typedef struct { QNode *front; QNode *rear; }LiQueue;
void initStack(Sqstack &st) //初始化栈 { st.top = -1; //将栈顶设置为-1 }
int isEmpty(Sqstack st) { if(st.top==-1) return 1; else return 0; }
int Push(SqStack &st, int x) { if(st.top == maxSize-1) return 0; ++(st.top); //先移动指针再进栈 st.data[st.top]=x; return 1; }
int Pop(SqStack &st, int &x) { if(st.top == -1) return 0; x = st.data[st.top]; //先取出元素,再进行指针的移动 --(st.top); return 1; }
p->next = 1st->next; 1st->next = p; //头插法建立链表的插入操作
p = 1st->next; x = p->data; 1st->next = p->next; free(p); //单链表删除操作
void InitStack(LNode *&1st) { 1st = (LNode*) malloc(sizeof(LNode)); //制造一个头结点 1st->next = NULL; }
int isEmpty(LNode *1st) { if(1st->next = NULL) return 1; else return 0; }
void push(LNode *1st,int x) { LNode *p; p = (LNode*)malloc(sizeof(LNode)); p->next = NULL; P->data = x; p->next = 1st->next; 1st->next = p; }
void Pop(LNode *1st,int &x) { LNode *p; if(1st->next==NULL) return 0; //单链表删除操作 p = 1st->next; x = p->data; 1st->next = p->next; free(p); return 1; }
原文:https://www.cnblogs.com/frl520/p/9419172.html