只允许在一段进行插入数据操作,另一端进行删除数据操作的特殊线性表。 队列具有先进先出FIFO(Fist in First Out)的规则 入队列:队尾 出队列:队头 这个结构就是队列 它所遵循的原则是:先进先出。这个非常重要!一定要牢记 有关实现的思考 数组还是链表? 当然这里,我们毫不犹豫是要选择单链表的,因为单链表的头删...
// 数组现有数据数量,即为top值intStackSize(Stack*ps){assert(ps);returnps->top;}// 检查栈是否为空intStackEmpty(Stack*ps){assert(ps);returnps->top==0;}// 销毁栈voidStackDestroy(Stack*ps){free(ps->a);ps->capacity=ps->top=0;} 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12....
InitStack(&s):初始化栈,构造一个空栈S,分配内存空间. DestroyStack(&L):销毁栈.销毁并释放S所占用的内存空间 Push(&S,x):进栈,若栈S未满,则将x加入使之成为新栈顶 Pop(&S,&x):出栈,若栈S非空,则弹出栈顶元素,并用x放回 GetTop(S,&x):读栈顶元素.若栈S非空,则用x返回栈顶元素 StackEmpty...
Elemtype data[MaxSize];//存放栈中元素inttop1;//栈1顶指针inttop2;//栈2顶指针}SqDoubleStack;//共享栈的简写boolPush(SqStack &S,ElemType x,intstackNum){if(S.top1+1==S.top2)returnfalse;if(stackNum==1) S.data[++S.top1]=x;elseif(stackNum==2) S.data[--S.top2]=x;returntrue;...
下面这段代码练习了队列的基本操作:队列结构体定义(比栈的稍微复杂一点)、在队尾插入新元素、删除队头元素、销毁队列、打印队列、循环队列的定义等等,这部分牵涉到好多的指针操作,如果有些困难可以在纸上划出队列的结构,列出指针的操作前后变化,就容易多了(个人感觉如果线性表学好了,这些操作根本不在话下)。需要注意...
数组栈 链式栈 对于第一种头作为栈顶,插入删除数据为头插和头删,这样很容易找到头进行操作,如果用头做栈顶,头插头删,就可以设计成单链表。 第二种尾作为栈顶,插入删除数据为尾插和尾删,这种结构设计成双向链表比较好,否则删除数据效率低。 其次数组栈缓存利用率高,因为数组是一段连续的空间,内存访问数组的第一...
(1)栈的结构 栈的结构,在其他博客也说的很多了,这里就简单说一说,栈是一种线性结构,栈的元素只能先进后出(Frist In Last Out简称 FILO),最早进入的元素存储到栈底,最后进入的元素叫栈顶,栈的操作只能在栈顶操作。 栈的结构可以用数组或者链表来实现 ...
1、设计栈的顺序存储结构体,编程实现栈的基本操作。 2、借助已设计好的栈的基本操作,实现数制转换算法conversion(int n),算法功能为将十进制正整数转换成相应的二进制数。(1) 数制转换(67)10=(1000011)2 3、实现顺序循环队列的基本操作:初始化、入队、出队、判队空、队满、输出队列中元素个数等操作(用(q....
出栈(pop)操作,是在栈不为空的情况下(注意一定要进行判空操作),将栈顶的元素删除,同时top指针,next向下进行移动即可的操作。 其代码可以表示为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 //出栈 pop Link_Stack *Pop_stack(Link_Stack *p) {...
和栈相反,队列是一种先进先出的线性表。它只允许在表的一端进行插入,而在另一端删除元素。这和我们日常生活中的排队是一样的,最早进入队列的元素最早离开。在队列中允许插入的一端叫队尾(rear),允许删除的一端称为队头(front)。队在程序中经常用到。一个最典型的例子就是操作系统的排队作业。ok我们先来看队...