C++实现链表队列
来源:互联网 发布:mac开发工具 编辑:程序博客网 时间:2024/06/03 18:43
今天一个学妹问了我一个上机题,写一个链表队列,从10-20000之间取500次随机数,后一个比前一个大至少5就进入队列,否则略去。然后在这个队列中取出数据,求和以及平均值。关键就是链表队列的实现,下面贴上代码和注释。
#include <iostream>#include<time.h>#include<stdlib.h>using namespace std;class LinkNode{public: int data;//存放当前节点的数据 LinkNode * next;//指向下一个节点 LinkNode (const int el,LinkNode *ptr = 0){//构造函数 传入数据值以及下一个节点 data = el; next = ptr; }};class LinkQueue{private: LinkNode *rear; //指向尾巴节点 LinkNode *front; //指向头节点public: bool IsEmpty(); //判断是否为空 LinkQueue(); //构造函数 无参 bool EnQueue(const int item); //进入队列 bool DeQueue(int & item); //取出队列的头部元素并且删除 传入引用 这样就可以将取出来的值储存在item中 int size; //当前储存元素的个数};bool LinkQueue::IsEmpty(){ return front==NULL; //通过头结点是否为空来确定队列链表为不为空}LinkQueue::LinkQueue(){ size=0; //初始化的时候size赋值为0 即队列链表为空 front=rear=NULL; //头结点和尾节点相等 且均指向空}bool LinkQueue::EnQueue (const int item){ if (IsEmpty()) //当链表为空时开辟新节点 并且让头指针和尾指针均指向该节点 { front = rear = new LinkNode(item, NULL); } else //不为空的时候 开辟新节点,将尾指针往下移 { rear->next = new LinkNode(item, NULL); rear = rear->next; } size++; //储存的个数加1 return true;}bool LinkQueue:: DeQueue(int &item){ LinkNode * temp; //创建一个中间节点 来完成节点的删除 item = front->data; //取出头结点的data值 放在item中 temp = front; front = front->next; //删除当前front delete temp; if (IsEmpty()) { return false; //链表队列为空的时候返回false 删除失败 } size--; //储存元素个数减1 return true;}int main(int argc, const char * argv[]) { int old_num=0; int new_num=0; LinkQueue queue; srand(time(NULL)); int i=0; while(i<500) { new_num=(rand()%19991+10); if (new_num>old_num+5) { old_num=new_num; cout<<new_num<<"入队列"<<endl; queue.EnQueue(new_num); } i++; } //生成该链表队列的过程 int size; size=queue.size; int sum=0; int average=0; int max,min; int num; while (queue.DeQueue(num)) //挨个取出链表队列的成员进行操作 { sum+=num; } average=sum/size; cout<<"共"<<size<<"个数"<<endl; cout<<"和为"<<sum<<endl; cout<<"平均值为"<<average<<endl;}有错误或者有一些需要优化的地方请指出。
阅读全文
1 0
- 数据结构---队列链表c实现
- C语言链表实现队列操作
- 链表实现队列 c语言
- C语言实现链队列
- 双向链表、队列与栈的C/C++实现
- 队列实现 (双向循环链表 C++)
- 队列即基本操作(c链表实现)
- c语言实现多线程下的链表队列
- C语言使用非循环双向链表实现队列
- 队列-C语言-链表的实现方式
- 队列的C语言实现(通过内核链表)
- C语言实现数据结构中的链队列
- 链队列的实现 C语言
- 链队列的C语言实现
- 数据结构C语言实现之链队列
- 链队列的C语言实现
- 链队列的c语言实现
- 数据结构(C实现)------- 链队列
- C#——快速排序
- JSP动态交互、JSP执行过程、JSP页面元素、JSP九大内置对象
- 程序员新手入门须知
- NYOJ456. 邮票分你一半(DP)
- 1010. 一元多项式求导 (25)--PAT乙级
- C++实现链表队列
- 使用nexus时在setings.xml中需要配置的文件
- thinkphp项目部署到Linux服务器上,报错“模板不存在”
- 第二周 --上机发文章
- 温度
- matlab导入excel数据
- HDOJ HDU 1073 Online Judge
- Linux常用工具网址
- 选择,循环条件