数据结构第三章学习总结
1.这一章主要学习了栈和队列的一些基本操作。
(1)栈(LIFO)分为顺序栈和链栈,遵循先进后出的原则。
顺序栈的一些基本操作:
typedef struct { SElemType data[MAXSIZE]; int top;//标记栈顶 int stacksize;//标记栈的最大容量 }SqStack;//顺序栈的定义 //初始化栈,让栈顶标志指向栈底 void init(SqStack &s) { s.top=0; s.stacksize=MAXSIZE; } //判断栈满,当栈顶标志指向栈最大容量时,说明栈满了 bool stackfull(SqStack s) { if(s.top==s.stacksize) return true; else return false; } //判断栈空,栈顶标志指向栈底,说明是空栈 bool stackempty(SqStack s) { if(s.top==0) return true; else return false; } //入栈,元素e压入栈顶,栈顶标志加1,入栈前要判断是否栈满 void push(SqStack &s, SElemType e) { s.data[s.top++]=e; } //出栈,栈顶标志减1,获取栈顶元素e, 出栈前要判断是否栈空 void pop(SqStack &s, SElemType &e) { s.top--; e=s.data[s.top]; }
(2)队列(FIFO)分为循环队列和链队,遵循先进先出的原则。
队列的一些基本操作:
typedef struct { QElemType data[MAXSIZE]; int front;//头指针 int rear;//尾指针 }SqQueue;//队列的定义 //初始化,直接让头指针和尾指针等于0 void init(SqQueue &q) { q.front=q.rear=0; } //判断队列是否满 bool queuefull(SqQueue q) { if(q.rear+1)%MAXSIZE==q.front; return true; else return false; } //判断队列是否为空 bool queueempty(SqQueue q) { if(q.front==q.rear) return true; else return false; } //入队 void enqueue(SqQueue &q, QElemType e) { q.data[q.rear]=e; q.rear=(q.rear+1)%MAXSIZE; } //出队 void outqueue(SqQueue &q, QElemType &e) { e=q.data[q.front]; q.front=(q.front+1)%MAXSIZE; }
2. 有时候找不到思路的时候会上网去查查别人的代码,时常会被奇妙的思路惊到。事后想想,其实就是自己对于书本内容理解不够透彻,其次是缺少实操真正去运用学到的东西,包括不同数据结构之间的选择等等。需要打下坚实的基础才能够高效地完成需求。
3. 有个公众号叫做诗and可能性,里面有分享一些很有趣的计算机资源。
4. 继续好好巩固一下基础吧。
相关推荐
koushr 2020-11-12
zhangxiafll 2020-11-13
kikaylee 2020-10-31
范范 2020-10-28
MILemon 2020-10-22
hugebawu 2020-10-12
LauraRan 2020-09-28
shenwenjie 2020-09-24
omyrobin 2020-09-23
guangcheng 2020-09-22
qiangde 2020-09-13
hanyujianke 2020-08-18
晨曦之星 2020-08-14
xiesheng 2020-08-06
KAIrving 2020-08-02
xiesheng 2020-08-02
范范 2020-07-30
chenfei0 2020-07-30