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

网站副标题怎么写卖服务器建网站

网站副标题怎么写,卖服务器建网站,公司年审需要多少钱,塑胶模具东莞网站建设思路 思路:用两个队列实现栈后进先出的特性 ,两个队列为空时,先将数据都导向其中一个队列。 当要模拟出栈时,将前面的元素都导入另一个空队列,再将最后一个元素移出队列 实现 实现: 因为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://www.yayakq.cn/news/70892/

相关文章:

  • h5动画网站wordpress 小工具样式
  • 如何建设网站教程编程自己做网站
  • 临沂网站建设报价免费网站站
  • 简洁网站模板下载学计算机需要什么基础
  • 深圳网站制作价格wordpress代码添加图片
  • 淄博网站运营公司营销型网站定位
  • 个人企业网站怎么建设网站建设竞价托管什么意思
  • 评论回复网站怎么做的重庆品牌策划公司排名
  • 有哪些做拎包入住的网站乌海seo
  • 开公司怎么做网站潜江公司做网站
  • 网站建设广州哪家好wordpress更改php版本
  • 网站建设用语言广告设计怎么学
  • 东莞阳光网站网站后台灰色
  • 商务网站建设的一般流程是什么如何做文献ppt模板下载网站
  • 网站开发好不好大荔县住房和城市建设局网站
  • 南京的网站建设公司哪家好网站推广方法有几种
  • 杭州如何设计网站首页现在做推广有什么好的方法
  • 甘肃建设项目审批权限网站洪梅镇网站建设
  • seo搜索引擎优化费用seo优
  • 孝感房产网站建设聊天代理分销系统
  • dz网站模板 首页显示内容银川网站建设一条龙服务
  • 网站备案 seo标小智在线logo免费设计
  • 手机把网站做成软件网页设计入门教程电子书下载
  • 国外 素材 网站网站推广软件下拉管家
  • 徐闻网站开发公司网络营销策划方案内容
  • 做中小型网站最好的架构wordpress 手册主题
  • 做画册找什么网站nginx 做网站
  • 绍兴专业做网站网站备案号的区别
  • 中交通力建设股份有限公司网站表白网页生成
  • 成都商城网站建设国外专门做旅游攻略的网站