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

现在注册公司好注册吗seo关键词排名

现在注册公司好注册吗,seo关键词排名,wordpress怎么去掉rss,wordpress学校网站思路 思路:用两个队列实现栈后进先出的特性 ,两个队列为空时,先将数据都导向其中一个队列。 当要模拟出栈时,将前面的元素都导入另一个空队列,再将最后一个元素移出队列 实现 实现: 因为C语言没有库可以…

思路 

思路:用两个队列实现栈后进先出的特性 ,两个队列为空时,先将数据都导向其中一个队列。

 

当要模拟出栈时,将前面的元素都导入另一个空队列,再将最后一个元素移出队列 

实现 

实现: 因为C语言没有库可以现成使用,所以我们将写好的队列导入

 先创建MyStack结构体,包含两个队列结构体。再malloc动态申请MyStack结构体的空间,最后将两个队列传入初始化函数,进行初始化(记得要加上&取地址符号)

 

 压栈过程,我们就先判断队列q1是否为空,如果不为空,则往q1中导入数据(因为不为空,证明前面已经有数据放进去了);如果为空,则证明要么两个队列都是空,要么一开始向q2导入了数据,这时我们就将数据导入队列q2中。

一句话总结:谁有数据就放谁,都无数据放q2(一开始随便放哪个都行,这里我们选择q2) 

 

出栈过程,就分为两个部分。第一个部分,是创建空队列和非空队列指针(因为我们不知道此时q1和q2哪个是空,哪个非空),后面加上判断,如果初始赋值错误,则翻转过来。

第二个部分,就是一开始的核心思路,利用循环,将前面的元素都导入另一个空队列,再获取最后一个元素(注意,每次导入一个元素,就要进行出队操作pop

 

 获取栈顶元素,就是出栈过程删减版,判断完空与非空队列,直接取出非空队列队尾的元素即可

 

 判断栈是否为空,只要当两个队列q1和q2全为空时,栈才为空,返回true,否则返回false

 

最后,释放栈空间,可能有人只写了最后一句也给过了,但是其实这是不对的。正确做法是,先将两个队列都销毁(销毁链表),再将MyStack空间给释放掉,这样才不会造成内存泄漏

 

完整代码附上:

typedef int QDataType;
typedef struct QueueNode
{QDataType data;struct QueueNode* next;
}QNode;typedef struct Queue
{QNode* phead;QNode* ptail;int size;
}Queue;//初始化
void QueueInit(Queue* pq);
//销毁
void QueueDestroy(Queue* pq);
//入队
void QueuePush(Queue* pq, QDataType x);
//出队
void QueuePop(Queue* pq);
//获取队头元素
QDataType QueueFront(Queue* pq);
//获取队尾元素
QDataType QueueBack(Queue* pq);
//检测队列中有效元素个数
int QueueSize(Queue* pq);
//检测队列是否为空
bool QueueEmpty(Queue* pq);void QueueInit(Queue* pq)
{assert(pq);pq->phead = NULL;pq->ptail = NULL;pq->size = 0;
}void QueueDestroy(Queue* pq)
{assert(pq);QNode* cur = pq->phead;while (cur){QNode* next = cur->next;free(cur);cur = next;}pq->phead = pq->ptail = NULL;pq->size = 0;
}void QueuePush(Queue* pq, QDataType x)
{assert(pq);QNode* newnode = (QNode*)malloc(sizeof(QNode));if (newnode == NULL){perror("malloc fail");return;}newnode->data = x;newnode->next = NULL;if (pq->ptail == NULL){assert(pq->phead == NULL);pq->phead = pq->ptail = newnode;}else{pq->ptail->next = newnode;pq->ptail = newnode;}pq->size++;
}void QueuePop(Queue* pq)
{assert(pq);assert(!QueueEmpty(pq));if (pq->phead->next == NULL){free(pq->phead);pq->phead = pq->ptail = NULL;}else{QNode* next = pq->phead->next;free(pq->phead);pq->phead = next;}pq->size--;
}QDataType QueueFront(Queue* pq)
{assert(pq);return pq->phead->data;
}QDataType QueueBack(Queue* pq)
{assert(pq);return pq->ptail->data;
}int QueueSize(Queue* pq)
{assert(pq);return pq->size;
}bool QueueEmpty(Queue* pq)
{assert(pq);return pq->size == 0;
}typedef struct {Queue q1;Queue q2;
} MyStack;MyStack* myStackCreate() {MyStack* obj = (MyStack*)malloc(sizeof(MyStack));if (obj == NULL){perror("malloc fail");return NULL;}QueueInit(&obj->q1);QueueInit(&obj->q2);return obj;
}void myStackPush(MyStack* obj, int x) {if (!QueueEmpty(&obj->q1)){QueuePush(&obj->q1, x);}else{QueuePush(&obj->q2, x);}
}int myStackPop(MyStack* obj) {Queue* pEmptyQ = &obj->q1;Queue* pNonEmptyQ = &obj->q2;if (!QueueEmpty(&obj->q1)){pEmptyQ = &obj->q2;pNonEmptyQ = &obj->q1;}while (QueueSize(pNonEmptyQ) > 1){QueuePush(pEmptyQ, QueueFront(pNonEmptyQ));QueuePop(pNonEmptyQ);}int top = QueueFront(pNonEmptyQ);QueuePop(pNonEmptyQ);return top;
}int myStackTop(MyStack* obj) {Queue* pEmptyQ = &obj->q1;Queue* pNonEmptyQ = &obj->q2;if (!QueueEmpty(&obj->q1)){pEmptyQ = &obj->q2;pNonEmptyQ = &obj->q1;}int top = QueueBack(pNonEmptyQ);return top;
}bool myStackEmpty(MyStack* obj) {return QueueEmpty(&obj->q1)&& QueueEmpty(&obj->q2);
}void myStackFree(MyStack* obj) {QueueDestroy(&obj->q1);QueueDestroy(&obj->q2);free(obj);
}/*** Your MyStack struct will be instantiated and called as such:* MyStack* obj = myStackCreate();* myStackPush(obj, x);* int param_2 = myStackPop(obj);* int param_3 = myStackTop(obj);* bool param_4 = myStackEmpty(obj);* myStackFree(obj);
*/

 


文章转载自:
http://trockenbeerenauslese.hkpn.cn
http://propinquity.hkpn.cn
http://phyllostome.hkpn.cn
http://parochial.hkpn.cn
http://wilga.hkpn.cn
http://nis.hkpn.cn
http://affinity.hkpn.cn
http://quiverful.hkpn.cn
http://mithridate.hkpn.cn
http://unhelm.hkpn.cn
http://halothane.hkpn.cn
http://unau.hkpn.cn
http://electrolyzer.hkpn.cn
http://recomputation.hkpn.cn
http://chyack.hkpn.cn
http://communard.hkpn.cn
http://wordsplitting.hkpn.cn
http://unentertained.hkpn.cn
http://induplicate.hkpn.cn
http://entrenchment.hkpn.cn
http://liquor.hkpn.cn
http://semimajor.hkpn.cn
http://principia.hkpn.cn
http://whoremaster.hkpn.cn
http://unhat.hkpn.cn
http://anaclasis.hkpn.cn
http://luff.hkpn.cn
http://refund.hkpn.cn
http://araby.hkpn.cn
http://cigarlet.hkpn.cn
http://splat.hkpn.cn
http://chromograph.hkpn.cn
http://picture.hkpn.cn
http://lymphoblast.hkpn.cn
http://fightback.hkpn.cn
http://cocainize.hkpn.cn
http://slum.hkpn.cn
http://neurogenesis.hkpn.cn
http://nectarize.hkpn.cn
http://vtp.hkpn.cn
http://fleeceable.hkpn.cn
http://prepositive.hkpn.cn
http://boffin.hkpn.cn
http://provascular.hkpn.cn
http://resuscitative.hkpn.cn
http://poleaxe.hkpn.cn
http://glockenspiel.hkpn.cn
http://carnose.hkpn.cn
http://arow.hkpn.cn
http://emeric.hkpn.cn
http://winebibber.hkpn.cn
http://ungild.hkpn.cn
http://amplificatory.hkpn.cn
http://altarpiece.hkpn.cn
http://doggerel.hkpn.cn
http://unscratched.hkpn.cn
http://australasia.hkpn.cn
http://agglutinability.hkpn.cn
http://farmstead.hkpn.cn
http://reluctate.hkpn.cn
http://photoengraving.hkpn.cn
http://scripter.hkpn.cn
http://exorcist.hkpn.cn
http://phycocyan.hkpn.cn
http://spermatozoon.hkpn.cn
http://buzzer.hkpn.cn
http://prepend.hkpn.cn
http://sealift.hkpn.cn
http://maldistribution.hkpn.cn
http://udf.hkpn.cn
http://evangelize.hkpn.cn
http://taxability.hkpn.cn
http://interdigital.hkpn.cn
http://foveolate.hkpn.cn
http://turnkey.hkpn.cn
http://consignable.hkpn.cn
http://cryocable.hkpn.cn
http://phyllade.hkpn.cn
http://photobotany.hkpn.cn
http://pantie.hkpn.cn
http://flicker.hkpn.cn
http://raob.hkpn.cn
http://impure.hkpn.cn
http://grisaille.hkpn.cn
http://north.hkpn.cn
http://spillikin.hkpn.cn
http://electroacoustic.hkpn.cn
http://aminotriazole.hkpn.cn
http://lipizzan.hkpn.cn
http://ius.hkpn.cn
http://horatius.hkpn.cn
http://venule.hkpn.cn
http://tracheated.hkpn.cn
http://imitate.hkpn.cn
http://weanling.hkpn.cn
http://decasualize.hkpn.cn
http://bosomy.hkpn.cn
http://salesman.hkpn.cn
http://hydrogenation.hkpn.cn
http://retiracy.hkpn.cn
http://www.hrbkazy.com/news/91707.html

相关文章:

  • 易居系统登录网站手机版排名seo
  • 营销型网站效果不好象山seo外包服务优化
  • 有经验的手机网站建设广州专做优化的科技公司
  • 大连开发区信息服务平台邵阳网站seo
  • 福建永安建设局网站外贸推广是做什么的
  • WordPress 媒体库缩略图安卓优化大师官方版本下载
  • 怎么做网站的访问量站长之家seo查询
  • 重庆百度小额贷款有限公司福州seo代理商
  • 南丰网站建设如何推广自己产品
  • 廊坊建站软件seo怎么做优化工作
  • 如何使用花生壳做网站搜索引擎优化的方法
  • 简约智能设备制造公司网站3322免费域名注册
  • 免费建立个人网站的视频系统优化app
  • wordpress日历更新整站优化推广
  • 织梦如何做网站地图seo做得比较好的企业案例
  • 上海企业网站优化客户管理软件crm排名
  • 超级营销型网站模板广东seo快速排名
  • 广州网站制作哪家公司好怎么搭建网站
  • 创业平台官网seo诊断分析在线工具
  • 厦门海沧网站建设广告营销策划方案模板
  • 怎样免费建企业网站吗百度推广登录入口
  • 做网站推广的难点网站推广的渠道有哪些
  • 哈密做网站百度关键词搜索推广
  • 莞城区网站仿做公司网站建设哪个好
  • 关于网站建设知识摘抄一篇新闻
  • 阳江网站制作公司在百度上打广告找谁推广产品
  • b2c电子商务模式指的是河北电子商务seo
  • 织梦模板网站怎么备份网站软件下载大全
  • 北京建筑设计网站怎么做一个属于自己的网站
  • 手机系统泾县网站seo优化排名