一,栈
1,栈的特征
1》数据特征 线性结构: 有一个栈顶,有一个栈底,中间每一个数据有且仅有一个直接前驱和直接后继。 2》操作特征 只允许在一端插入和删除数据,把这一端称为栈顶,另一端称为栈底。插入称为入栈,删除称为出栈。 (栈是一种特殊的线性表)总结:"后进先出"。
2,栈的顺序存储结构(顺序栈
2.1 顺序栈的结构
#ifndef __SEQSTACK_H__
#define __SEQSTACK_H__
#define SIZE 10
typedef struct seqstack{
datatype data[SIZE];
int top;
}seq_stack,*seq_pstack;
#endif
3,栈的链式存储结构(链栈)
3.1 链栈结点类型
typedef int datatype;
typedef struct linkstacknode{
datatype data;
struct linkstacknode *next;
}linkstack_node,*linkstack_pnode;
二,队列
1,队列的特征
1》数据特征 线性结构:有一个队头,有一个队尾,中间每一个数据有且仅有一个直接前驱和直接后继。 2》操作特征 只允许在一端插入,在另一端删除,把插入这端称为队尾,删除端称为队头,插入称为入队,删除称为出队。 (特殊的线性表:先进先出)
2,队列的顺序存储(循环队列)
2.1 队列类型
#ifndef __SEQQUEUE_H__
#define __SEQQUEUE_H__
#define SIZE 10
typedef struct seqqueue{
datatype data[SIZE];
int front,rear;
}seq_queue,*seq_pqueue;
#endif
3,队列的链式存储(链式队列)
3.1 链式队列结点类型
typedef int datatype;
typedef struct queuenode{
datatype data;
struct queuenode * next;
}queue_node,*queue_pnode;
typedef struct linkqueue{
queue_pnode front,rear;
}link_queue,*link_pqueue;
3.2入队操作
new->next=rear->next;
rear->next=new;
rear=rear->next;
3.3出队操作
t=front; //定义一个变量t保存队头
front=front->next;
free(t);
front->data 出队;