队列的顺序表示形式和实现

摘要: 队列 的顺序表示是用一组地址连续的存储单元依次存放队列中的 各个元素,并用指针front指向队头,指针rear指向队尾。 一般约定:front指针始终指向队头元素,而rear指针是指向队尾 元素的下一个位置。假溢出:当队满的时候,若还有元素进队,rear指针将会越界,从而 导致程序出错。而此时又不易像顺序表那样扩大数组空间,因为队列 的实际可用空间并未装满。处理假溢出:一种方法是将front指针和rear指针一起平移到数组的 起始位置;另一种方法就是将队列假想为一个循环的环状空间,称之 为循环队列。循环队列的局限性:用户必须为它假设一个最大长度,若队列最大长度 无法估计,则不宜采用循环队列结构 阅读全文
posted @ 2012-11-30 15:36 zm001 阅读(829) 评论(0) 推荐(0)

链栈

摘要: 链栈 栈的链式存储结构, 链栈是没有附加头结点的受限的单链表。栈顶指针就是链表的头指针链栈的类型;typedef struct StackNode{DataType data;struct StackNode *next;}StackNode;typedef struct LinkStack{StackNode *top;int stacksize;}初始化栈int InitStack(LinkStack *S){S->top = NULL;S->stacksize = 0;return 0;}判断链栈是否为空int StackEmpty(LinkStack *S){if (S.t 阅读全文
posted @ 2012-11-28 22:06 zm001 阅读(261) 评论(0) 推荐(0)

顺序栈

摘要: 顺序栈:利用一组连续的存储单元依次存放自栈底到栈顶的数据元素;由于栈顶元素是经常变动的,所以附设top指示栈顶元素在顺序表中的位置,同时也需要知道顺序栈存储空间的起始位置,因此还需设定一个base指针用来指示栈空间的起始位置。一般约定top指针指向栈顶元素的下一个位置,即新数据元素将要插入得位置。顺序栈的类型定义:tyedef struct{SElemType *base;SElenType *top;int stacksize;//栈当前可使用的最大容量}SqStack;初始化顺序表int InitStack(SqStack &S){S.base = (SElemType *)mal 阅读全文
posted @ 2012-11-28 21:50 zm001 阅读(2263) 评论(0) 推荐(0)

动态链表的基本操作

摘要: 该程序实现以下功能: 1. initlist_l(lnode&L); //建立一个带头结点的空链表 2. locationelem(linklist L, int i, elemtype &e); //在带头结点的单链表中查找第i个节点,若存在,则返回第i个元素的值;否则返回error 3. listinsert_l(linklist &L, ini i, elemtype e); //在带头结点的单链表中第i个结点之前插入元素e 4. listdelete_l(linklist &L, int i, elemtype &e); //删除带头结点的单链表 阅读全文
posted @ 2012-11-17 07:59 zm001 阅读(262) 评论(0) 推荐(0)

用函数分配空间

摘要: // 假设elemtype为非基本数据类型,如下程序int main(void){ elemtype *e; e = (elemtype*)malloc(sizeof(elemtype)); return 0;}用函数分配内存:int main(void){ elemtype *e; init_elem(e); //初始化 return 0;}void init_elem(elemtype *x){ x = (elemtype*)malloc(sizeof(elemtype));}//该程分配内存失败。虽然e与x都是指向同一个地址的指针,但是这两个指针的//地址不相同,也就是说子函数给x分配的 阅读全文
posted @ 2012-11-17 07:41 zm001 阅读(163) 评论(0) 推荐(0)