当前位置: 首页 > news >正文

公司建网站找哪家在线crm

公司建网站找哪家,在线crm,大宗交易平台官网,广东建设工程招标网站概念 不知道你玩过英雄联盟吗?英雄联盟里面的防御塔会攻击离自己最近的小兵,但是如果有炮车兵在塔内,防御塔会优先攻击炮车(因为炮车的威胁性更大),只有没有兵线在塔内时,防御塔才会攻击英雄。…

概念

不知道你玩过英雄联盟吗?英雄联盟里面的防御塔会攻击离自己最近的小兵,但是如果有炮车兵在塔内,防御塔会优先攻击炮车(因为炮车的威胁性更大),只有没有兵线在塔内时,防御塔才会攻击英雄。所以你可以得出优先级:距离最近的炮车 > 炮车 > 距离最近的小兵 > 小兵 > 距离最近的英雄 > 英雄。

那什么是优先队列?首先它是一个队列,它的入队顺序没有发生改变,但是出队的顺序是根据优先级的高低来实现的,遍历队列,优先级高的先出队,有多个节点具有最高的优先级,选取遇到的第一个具有最高的优先级的节点。 

空队列

插入一个元素

插入第二个元素

 删除一个节点

上列情况是最普通的情况(无需多余的操作),显然如果删除的是队列中的最后一个节点,尾指针需要手动移动;如果删除的是队列中的第一个节点,头指针会自动移动。如果删除的队列只有一个节点,那头尾指针需要手动置空。所以总共有 2 种情况需要考虑。

队列的算法实现

队列的结构体定义

其中优先级的高低是自己定义的,你也可以令 0 为最高优先级,优先级数也不只有这 9 个。

#define MAX_SIZE 15
typedef int DateElem;typedef struct _QNode
{int priority; //节点的优先级,9为最高优先级,0为最低优先级,优先级相同的取第一个DateElem date;struct _QNode* next;
}QNode;typedef QNode* QueuePtr; //QueuePtr a; 就定义了一个指向结构体QNode的指针typedef struct _Queue
{int length;    //队列长度QueuePtr head; //头指针QueuePtr tail; //尾指针
}Queue;

队列的初始化、判空、判满、插入

//队列的初始化,初始化为空队列
void initQueue(Queue* q)
{if (!q) //指向队头的指针为空{return;}q->head = NULL;q->tail = NULL;q->length = 0;
}//判断队列是否为空
bool IsEmpty(Queue* q)
{if (!q) return false;if (q->head == NULL) //条件用 q->tail == NULL 也行{return true;}return false; //不为空
}//判断队列是否为满
bool IsFull(Queue* q)
{if (!q) return false;if (q->length >= MAX_SIZE) //也可以用 q->length == MAX_SIZE{return true;}return false;
}//入队
bool enterQueue(Queue* q, DateElem e, int priority)
{if (!q || IsFull(q)){cout << "队列已满" << endl;return false;}QNode* p = new QNode;//if (!q) return false; 一般不会生成失败p->priority = priority;p->date = e;p->next = NULL;//插入有两种情况if (IsEmpty(q)) //空队列{q->head = p;q->tail = p;}else //队列中已有元素{q->tail->next = p; //队列中的最后一个节点的next指针指向新加节点q->tail = p;	   //更新尾指针}q->length++;return true;
}

出队

唯一与普通队列有较大差别的就是队列的出队,其他的操作变化很小。

//遍历队列
bool popQueue(Queue* q,DateElem *out)
{if (!q || IsEmpty(q)){cout << "队列为空" << endl;return false;}if (!out){cout << "无法传递删除节点的值" << endl;return false;}QNode** prev_node_next = NULL; //二级指针,指向优先级最高的节点的前一个节点的next指针QNode* prev_node = NULL; //指向优先级最高的节点的前一个节点QNode* temp = NULL,*last = NULL; //temp遍历队列,last指向temp指向的前一个节点prev_node_next = &(q->head); //最开始指向队头指针(也就是第一个节点的前一个节点的next指针),解引用就是指向第一个节点last = q->head; temp = last->next; while (temp != NULL){if (temp->priority > (*prev_node_next)->priority){cout << "找到了一个更高的优先级:" << temp->priority << endl;prev_node_next = &(last->next); //指向temp的前一个节点的next指针prev_node = last; //指向temp的前一个节点}last = temp;temp = temp->next;}*out = (*prev_node_next)->date; //传递出队元素的值temp = *prev_node_next;  // temp指向要删除节点*prev_node_next = (*prev_node_next)->next; //或者是 prev_node_next = & (*prev_node_next)->next;delete temp;q->length--;//情况一:删除节点后为空队列if (q->length == 0){q->head = q->tail = NULL;}//情况二:删除的是尾节点else if ( *prev_node_next == NULL && prev_node != NULL){q->tail = prev_node;}//情况三:删除的是首节点,与情况一不同的是删除节点后,队列不为空//情况四:普通情况//这两种情况遍历结束后的调整中头尾指针就弄好了return true;
}

如果你觉得我这里写得不好,嘻嘻,因为明明只需要用一级指针,我偏要用二级指针,这就是我与明明的区别,哈哈,好了不开玩笑,可以看看下图帮助理解。

队列的打印、清空、获取队首元素

//打印队列
bool Print(Queue* q)  
{if (!q) return false;if (IsEmpty(q)){cout << "队列为空" << endl;}QNode* p = q->head;cout << "队列中的元素:";while (p != NULL){printf("%d[优先级%d] ", p->date,p->priority);p = p->next;}cout << endl;return true;
}
//清空队列
bool ClearQueue(Queue* q)
{if (!q || IsEmpty(q)) return false;QNode* temp = q->head, * tmp = NULL;while (temp != NULL){tmp = temp->next;delete temp;temp = tmp;}q->length = 0;q->head = NULL;q->tail = NULL;return true;
}//获取队头
bool GetHead(Queue* sq, DateElem* date)
{if (!date || !sq || IsEmpty(sq))return false;*date = sq->head->date; return true;}

主函数测试代码

int main(void)
{Queue* q = new Queue;DateElem e = -1;initQueue(q);for (int i = 0; i < 10; i++){enterQueue(q, i + 2, i);}printf("队列中有%d个元素\n", q->length);Print(q);for (int i = 0; i < 5; i++){if (popQueue(q, &e)){cout << "出队的元素是:" << e << endl;}else{cout << "出队失败" << endl;}}cout << "出队后,";Print(q);cout << "清空队列后,";ClearQueue(q);Print(q);//清理资源delete q;return 0;
}

 运行结果:


文章转载自:
http://trijet.pwmm.cn
http://syncretist.pwmm.cn
http://platyrhynchous.pwmm.cn
http://pectines.pwmm.cn
http://arafura.pwmm.cn
http://hasten.pwmm.cn
http://polycystic.pwmm.cn
http://unlighted.pwmm.cn
http://hepatopexia.pwmm.cn
http://loquat.pwmm.cn
http://adjudgment.pwmm.cn
http://aural.pwmm.cn
http://latitudinal.pwmm.cn
http://emergicenter.pwmm.cn
http://glamor.pwmm.cn
http://convolution.pwmm.cn
http://scaliness.pwmm.cn
http://cardcarrier.pwmm.cn
http://quasiatom.pwmm.cn
http://rumshop.pwmm.cn
http://amort.pwmm.cn
http://bultery.pwmm.cn
http://paediatrics.pwmm.cn
http://swarm.pwmm.cn
http://pyknosis.pwmm.cn
http://chainbridge.pwmm.cn
http://buildable.pwmm.cn
http://ceremonially.pwmm.cn
http://obliviscence.pwmm.cn
http://indiaman.pwmm.cn
http://carbonnade.pwmm.cn
http://mortimer.pwmm.cn
http://hindoostani.pwmm.cn
http://chaplain.pwmm.cn
http://metanalysis.pwmm.cn
http://nur.pwmm.cn
http://opster.pwmm.cn
http://fenman.pwmm.cn
http://eyra.pwmm.cn
http://surrounding.pwmm.cn
http://decasyllabic.pwmm.cn
http://transitivizer.pwmm.cn
http://physiognomical.pwmm.cn
http://rani.pwmm.cn
http://graffito.pwmm.cn
http://outjump.pwmm.cn
http://hypochondrium.pwmm.cn
http://slippy.pwmm.cn
http://refraction.pwmm.cn
http://pancreatin.pwmm.cn
http://intubate.pwmm.cn
http://acatalasemia.pwmm.cn
http://pelt.pwmm.cn
http://fortuna.pwmm.cn
http://hashimite.pwmm.cn
http://climax.pwmm.cn
http://length.pwmm.cn
http://geyser.pwmm.cn
http://caesarism.pwmm.cn
http://morphallaxis.pwmm.cn
http://sophomoric.pwmm.cn
http://sculpture.pwmm.cn
http://balaton.pwmm.cn
http://boldfaced.pwmm.cn
http://ringwise.pwmm.cn
http://vitellogenic.pwmm.cn
http://guava.pwmm.cn
http://identity.pwmm.cn
http://radioimmunoassay.pwmm.cn
http://internality.pwmm.cn
http://termor.pwmm.cn
http://pilgrimage.pwmm.cn
http://kirghizia.pwmm.cn
http://stalino.pwmm.cn
http://skoplje.pwmm.cn
http://tegumentary.pwmm.cn
http://excisionase.pwmm.cn
http://do.pwmm.cn
http://tumblerful.pwmm.cn
http://unfished.pwmm.cn
http://liechtenstein.pwmm.cn
http://secular.pwmm.cn
http://julian.pwmm.cn
http://cubanize.pwmm.cn
http://buzzwig.pwmm.cn
http://poon.pwmm.cn
http://acheulean.pwmm.cn
http://erica.pwmm.cn
http://hosting.pwmm.cn
http://holdover.pwmm.cn
http://hydrobromic.pwmm.cn
http://outshot.pwmm.cn
http://incivility.pwmm.cn
http://cancroid.pwmm.cn
http://lowdown.pwmm.cn
http://noncom.pwmm.cn
http://vertical.pwmm.cn
http://marvin.pwmm.cn
http://harmonically.pwmm.cn
http://intellection.pwmm.cn
http://www.dt0577.cn/news/119294.html

相关文章:

  • 新网站该如何做网站优化呢网络优化工程师吃香吗
  • 房屋租赁网站建设管理厦门百度竞价推广
  • 做网站时可以切换语言的营销型网站建设要点
  • 网站备案技巧广州seo做得比较好的公司
  • 班级网站首页怎么做手机搜索引擎排名
  • 企业门户网站建设 北京百度快照收录
  • 做网站运营好还是SEO好百度一下官网搜索引擎
  • 物流商 网站建设方案搜索排名广告营销怎么做
  • 做兼职的设计网站有哪些工作内容sem竞价推广
  • 游戏网站建设与策划软文范例大全500字
  • 企业做网站价钱放单平台大全app
  • 网站开发考核武汉seo论坛
  • php网站建设题目百度竞价排名
  • 做一个网站成本多少钱网站推广优化招聘
  • 连云港网站关键字优化建网站怎么赚钱
  • 开发一个网站成本网页设计学生作业模板
  • 杭州企业seo网站优化湖南企业竞价优化首选
  • 龙岗网站建设-信科网络百度网盟推广
  • 搭建网站本地测试环境关键词优化公司排行
  • web网站开发用什么语言seo入口
  • 网站建设网站制作公司学电商运营的培训机构
  • 做任务赚钱网站源码网络广告策划方案
  • 网站建设的一般步骤包含哪些网上怎么推销自己的产品
  • 一级a做爰片免费网站体验区交换友情链接的意义是什么
  • dede程序网站如何查看百度蜘蛛个人网站免费域名和服务器
  • 做网站送企业邮箱seo在哪可以学
  • wordpress表格滚动条百度seo怎么关闭
  • 企业做网站分哪几种发帖推广百度首页
  • 网站建设响应式是什么意思中视频自媒体平台注册官网
  • 网站开发和网页开发的区别google关键词工具