链表实现队列的出队和入队,栈的入栈和出栈
来源:互联网 发布:海德网络印刷下单系统 编辑:程序博客网 时间:2024/05/01 03:26
队列的出队和入队
queue.h
#ifndef QUEUE_H_#define QUEUE_H_#include<iostream>typedef struct tagstudent{int data;struct tagstudent *next;}node;typedef struct tagqueue{node *first;//队列头指针,指向链表的第一个节点node *rear;}queue;class Cqueue{public:Cqueue(){}~Cqueue(){}queue *push_queue(queue *HQ, int x);queue *pop_queue(queue *HQ);int top_queue(queue *HQ);private:queue *HQ;};#endifqueue.cpp
#include"queue.h"queue * Cqueue:: push_queue(queue *HQ, int x){node *s;s = new node;s->data = x;s->next = NULL;if (HQ->rear == NULL)//queue is empty{HQ->first = s;HQ->rear = s;}else{HQ->rear->next = s;//将尾指针的next指向新增元素sHQ->rear = s;//将尾指针移动到新入队的元素s}return HQ;}queue *Cqueue::pop_queue(queue *HQ)//只能把队列第一个删掉{node *s; int x;if (HQ->first == NULL){throw("空队列");}else{s = HQ->first;x = HQ->first->data;if (HQ->first == HQ->rear)//队列只有一个节点{HQ->first = NULL;HQ->rear = NULL;}else{HQ->first = HQ->first->next;delete s;}}return HQ;}int Cqueue::top_queue(queue *HQ){if (HQ->first != NULL){return HQ->first->data;}elsethrow("队列为空");}
栈的出栈和入栈
stack.h
#ifndef STACK_H_#define STACK_H_#include<iostream>typedef struct tagstudent{int data;struct tagstudent *next;}node;typedef struct tagstack{node *stacklow;//栈底指针,指向链表第一个节点node *stacktop;//栈顶指针}stack;class Cstack{public:Cstack(){}~Cstack(){}stack *push(stack *ST, int x);stack *pop(stack *ST);int top(stack *ST);private:Cstack *ST;};#endif
stack.cpp
#include"stack.h"stack *Cstack::push(stack *ST,int x){node *s;s = new node;s->data = x;if (ST->stacklow == NULL)//空栈{ST->stacklow = s;ST->stacktop = s;}else{ST->stacktop->next = s;ST->stacktop = s;}return ST;}stack * Cstack::pop(stack *ST){node *s;if (ST->stacklow == NULL){throw("空栈");}else{s = ST->stacklow;if (ST->stacklow == ST->stacktop)//只有一个节点{ST->stacklow = NULL;ST->stacktop = NULL;}else{while (s->next != ST->stacktop){s = s->next;}ST->stacktop = s;ST->stacktop->next = NULL;}return ST;}}int Cstack::top(stack *ST){if (ST->stacklow != NULL)//栈不为空{return ST->stacktop->data;}elsethrow("栈为空");}
总结:队列先进先出,入队就是单链表在尾节点插入,出队就是删除单链表头结点。
栈后进先出,入栈就是单链表在尾节点插入, 出栈就是删除单链表尾节点,需要从头结点进行遍历,一直找到尾节点的前驱节点为止。
1 0
- 链表实现队列的出队和入队,栈的入栈和出栈
- 链式存储结构实现队列的入队和出队操作以及 栈的出栈和入栈操作
- 利用两个栈实现队列---入队和出队
- 队列的入队和出队操作
- 队列的入队和出队
- 利用两个栈实现队列的入队出队
- 使用两个栈实现队列的入队、出队
- 用单链表实现一个队列或一个栈的出入队和出入栈操作
- 用两个栈实现队列的入队和出对操作
- 队列的入队、出队操作实现
- //使用顺序表实现循环队列的入队和出队
- 【数据结构】队列的出队和入队操作
- C/C++知识回顾 队列的出队和入队
- 链队列的入队、出队
- 链队列的出队入队
- 链队列的初始化、入队、出队等操作实现
- 2个堆栈实现自定义队列的入队出队方法 - 栈容量默认自动扩充
- 用栈实现队列入队出队操作
- Java 多线程编程
- apache一台服务器搭建两个不同域名的网站如何配置
- 利用Jsoup创建属于自己的信息库
- linux之cut命令使用和总结
- 零基础入门深度学习(1) - 感知器
- 链表实现队列的出队和入队,栈的入栈和出栈
- python基础篇--Class(类)
- 洛谷1604 B进制星球
- 删除元素 (Jquery)
- gradle遇到过的问题
- NLP
- shell getopts 用法
- Android中使用线程池来管理线程
- 我好方!月薪5000怎样体面回家过年?