分类: C/C++
2011-12-20 18:25:49
栈:
栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。
数组方式:
typedef struct{
int data[10];
int top;
}stack;
链表实现:
typedef struct stack{
int data;
struct stack *next;
}Stack, pStack;
栈操作:
创建,判断是否为空和满,清空栈,入栈,出栈,清空,销毁
链式栈不需要判断是否为满
队列:
队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。
设定:front为对头的前一个的下标,rear为对尾的元素下标,
数组实现:
typedef struct {
int data[10];
int front;
int rear;
}queue;
数组实现的队列,一般为循环队列,在入栈和出栈的时候要判断位置是否为数组两端,可以在对front和rear++后对数组长度取模操作。
链表实现:
typedef struct node{
int data;
struct node *next;
}Node, *Link;
typedef struct link{
Link front;
Link rear;
} lqueue, *LQueue;
队列的操作:创建一个空队列,入队,出队,,判断是否为空,是否为满(链式队列不需要),清空,销毁~注意:在链式队列中,出队操作时,可以将front所指向的头结点释放,将下一结点的值出对,然后将front指向下一节点,将该节点作为头结点,这样在形式和操作上比较同意~