数据结构《栈和队列》
栈是限定在表尾进行插入和删除操作的线性表,表头端称为栈底。(LIFO后进先出的特点)
队列是一种先进先出的线性表(FIFO),只允许在表的一端进行插入,在另一端进行删除,插入一端称为队尾,删除一端称为队头。
可以在两端进行插入删除操作的线性表城位置双端队列。
操作方法
- 01
入栈: push(sqstack &S,Selemtype e) { if(s.top-s.base >= s.stacksize) { s.base = (elemtype *)realloc(s.base,s.stacksize+STACKINCREAMENT)*sizeof(elemtype)); if(!s.base) exit(overflow) s.top = s.base+s.stacksize; s.stacksize += STACKINCREAMENT; } *s.top ++ = e; return OK; }
- 02
出栈: pop(sqstack &s,selemtype e) { if(s.top == s.base) return ERROR; e = *--s.top; return OK; }
- 03
进队: enqueue(linkQueue &Q,qelemtype e) { p = (queueptr)malloc(sizeof(qnode)); if(!p) exit(overflow) p->data = e;p->next=null; Q.rear-next = p; Q.rear = p; return OK; }
- 04
出队: DEqueue(linkqueue &Q,qelemtype e) { if(Q.front==Q.rear) retrun error; p = Q.front->next; e= p->data; Q.front->next=p->next; if(Q.rear == p) Q.front=Q.rear; free(p); return OK; }