首页 > 其他 > 详细

读书笔记--栈和队列

时间:2017-04-20 21:15:35      阅读:117      评论:0      收藏:0      [点我收藏+]

    栈是个顺序的空间结构,其主要原理是开辟一个初始的、连续的空间以供节点的插入,栈节点之间并没有逻辑上的关联,也就是说,上一个节点并没有存储下一个节点的地址,也就是指针。所以栈的清空可以直接将头指针指向尾指针所指向的,下一个节点插入将覆盖掉原来的数据。简而言之,删除一个节点是将该节点从栈中删除,而并没有删除这个节点的数据。而队列不同,队列节点与节点之间有逻辑上的关联,上一个节点的指针域存储下一个节点的地址,而他们之间的访问则要遍历整个队列。所以清空队列需要依次清空,而不能直接在头指针和尾指针进行操作。

 1 typedef struct QNode{
 2     QElemType date;//节点的数据域,QElemType是任何类型的数据 
 3     struct QNode *next;//节点的指针域,指向下一节点 
 4 }QNode,*QueuPtr;
 5 typedef struct{
 6     Queuptr front;//队头指针 
 7     Queuptr rear;//队尾指针 
 8 }LinkQueue;
 9 Status DestroyQueue(LinkQueue &Q){
10     while(Q.front){//如果对头指针不为空,也就是说存在下一个节点 
11         Q.rear=Q.front->next;//队尾指针指向下一个节点,保存下一节点的地址 
12         free(Q.front);//删除此节点,释放其内存 
13         Q.front=Q.rear;// 将保存在队尾指针的下一节点地址赋值给队头指针 
14     }
15     return OK;
16 } 

 

读书笔记--栈和队列

原文:http://www.cnblogs.com/hxlt/p/duilie.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!