【12】python 栈型数据结构模拟、队列型数据结构模拟

一、压栈操作模拟

#__author:"吉*佳"
#date: 2018/10/21 0021
#function:栈

# 栈:即是先进后出的一种数据结构

# (1)模拟压栈操作
stack=[]
flag=True
while flag:
    temp = input("请输入压栈元素[输入0代表退出]:")
    if temp!=str(0):
        stack.append(temp)
    else:
        print(‘压栈结束,栈内元素为:‘, stack)
        # 借助flag退出while循环
        flag=False

‘‘‘
输出操作:
请输入压栈元素[输入0代表退出]:1
请输入压栈元素[输入0代表退出]:2
请输入压栈元素[输入0代表退出]:3
请输入压栈元素[输入0代表退出]:4
请输入压栈元素[输入0代表退出]:5
请输入压栈元素[输入0代表退出]:0
压栈结束,栈内元素为: [‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘]
‘‘‘

二、出栈模拟

#__author:"吉勇佳"
#date: 2018/10/21 0021
#function:栈

# 栈:即是先进后出的一种数据结构

# (1)模拟压栈操作
stack=[]
flag=True
while flag:
    temp = input("请输入压栈元素[输入0代表退出]:")
    if temp!=str(0):
        stack.append(temp)
    else:
        print(‘压栈结束,栈内元素为:‘, stack)
        # 借助flag退出while循环
        flag=False

‘‘‘
输出操作:
请输入压栈元素[输入0代表退出]:1
请输入压栈元素[输入0代表退出]:2
请输入压栈元素[输入0代表退出]:3
请输入压栈元素[输入0代表退出]:4
请输入压栈元素[输入0代表退出]:5
请输入压栈元素[输入0代表退出]:0
压栈结束,栈内元素为: [‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘]
‘‘‘
print("************************分隔符*******************")
tt=stack.pop()
print("出栈元素",tt)
print("栈内元素信息:",stack)
tt=stack.pop()
print("出栈元素",tt)
print("栈内元素信息:",stack)
tt=stack.pop()
print("出栈元素",tt)
print("栈内元素信息:",stack)

‘‘‘
输出
请输入压栈元素[输入0代表退出]:1
请输入压栈元素[输入0代表退出]:2
请输入压栈元素[输入0代表退出]:3
请输入压栈元素[输入0代表退出]:4
请输入压栈元素[输入0代表退出]:5
请输入压栈元素[输入0代表退出]:0
压栈结束,栈内元素为: [‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘]
************************分隔符*******************
出栈元素 5
栈内元素信息: [‘1‘, ‘2‘, ‘3‘, ‘4‘]
出栈元素 4
栈内元素信息: [‘1‘, ‘2‘, ‘3‘]
出栈元素 3
栈内元素信息: [‘1‘, ‘2‘]
‘‘‘

入队与出队操作

队列:

即是先进先出的一种数据结构
在python中,可以通过 collections模块。 queue = collections.deque()来实现入队操作 。相应的出队操作可以用queue.leftpop()即可

#__author:"吉*佳"
#date: 2018/10/21 0021
#function:队列

import collections

# 队列:即是先进先出的一种数据结构

# (1)模拟入队操作。队列有如下模块可以实现
queue = collections.deque()

# 入队
flag=True
while flag:
    temp = input("请输入入队元素[输入0代表退出]:")
    if temp!=str(0):
        queue.append(temp)
    else:
        print(‘入队结束,队内元素为:‘, queue)
        # 借助flag退出while循环
        flag=False

‘‘‘
输出:
请输入入队元素[输入0代表退出]:1
请输入入队元素[输入0代表退出]:2
请输入入队元素[输入0代表退出]:3
请输入入队元素[输入0代表退出]:4
请输入入队元素[输入0代表退出]:5
请输入入队元素[输入0代表退出]:0
入队结束,队内元素为: deque([‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘])
‘‘‘

# 出队模拟
print("************************分隔符*******************")
tt=queue.popleft()
print("出队元素",tt)
print("队内元素信息:",queue)
tt=queue.popleft()
print("出队元素",tt)
print("队内元素信息:",queue)
tt=queue.popleft()
print("出队元素",tt)
print("队内元素信息:",queue)

‘‘‘
输出:
请输入入队元素[输入0代表退出]:1
请输入入队元素[输入0代表退出]:2
请输入入队元素[输入0代表退出]:3
请输入入队元素[输入0代表退出]:4
请输入入队元素[输入0代表退出]:5
请输入入队元素[输入0代表退出]:0
入队结束,队内元素为: deque([‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘])
************************分隔符*******************
出队元素 1
队内元素信息: deque([‘2‘, ‘3‘, ‘4‘, ‘5‘])
出队元素 2
队内元素信息: deque([‘3‘, ‘4‘, ‘5‘])
出队元素 3
队内元素信息: deque([‘4‘, ‘5‘])
‘‘‘

原文地址:https://www.cnblogs.com/jiyongjia/p/9826029.html

时间: 2024-08-25 11:06:51

【12】python 栈型数据结构模拟、队列型数据结构模拟的相关文章

Python与数据结构[2] -> 队列/Queue[0] -> 数组队列的 Python 实现

队列 / Queue 数组队列 数组队列是队列基于数组的一种实现,其实现类似于数组栈,是一种FIFO的线性数据结构. Queue: <--| 1 | 2 | 3 | 4 | 5 |<-- 下面将使用Python中的list来替代C语言中的数组实现数组队列的数据结构. Note: 这里的实现并没有像C语言中的申请一块固定大小的数组,手动的定制数组中队列的头尾位置,而是利用list的特性直接完成,因此较为简单. 数组队列的实现与数组栈的实现基本类似,同时入列和出列也十分简单,仅需要对数组进行操作即

自定义栈的实现及使用两个栈模拟队列

一,使用单链表实现栈 ①栈需要一个栈顶指针 ②栈的基本操作有出栈和入栈,以及判断栈是否为空 ③单链表中每个结点表示一个栈元素,每个结点有指向下一个结点的指针.因此,在栈内部需要实现一个单链表.代码如下: public class Stack<T extends Comparable<? super T>>{ private class Node{ T ele; Node next; public Node(T ele) { this.ele = ele; } } Node top;

【干货】容器适配器实现两个栈模拟队列

用两个栈模拟队列的思想就是"倒水思想",这里我们用自定义类型模拟出线性表,再用线性表做容器实现栈的数据结构,最后用栈来实现队列,代码如下: #include<iostream> #include<string> #include<cassert> struct __TrueType//类型萃取 { bool Get() { return true; } }; struct __FalseType { bool Get() { return false

简单数据结构之队列模拟

1 /************************************************************************************** 2 * Function : 模拟队列 3 * Create Date : 2014/04/23 4 * Author : NTSK13 5 * Email : [email protected] 6 * Copyright : 欢迎大家和我一起交流学习,转载请保持源文件的完整性. 7 * 任何单位和个人不经本人允许不

剑指offer系列5---两个栈 模拟队列的操作

[题目]两个栈 模拟队列的入队出队操作 1 package com.exe1.offer; 2 3 /** 4 * [题目 ]:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 5 * 队列的出队:应该是队列的列首先出,即栈底元素先出:思路:先把stack1元素一个个弹至上stack2中,再顺序出stack2中数即为队列的出队顺序. 6 * 入队:先放到栈1中 7 * @author WGS 8 * 9 */ 10 import java.util.Stack

双栈模拟队列与双队列模拟栈

1.两个队列共享一个环形向量空间,将这两个队列模拟成栈,并实现十进制转化为二进制 程序如下: 1 #include<stdio.h> 2 #include<stdlib.h> 3 #define maxSize 20 4 typedef int DataType; 5 typedef struct 6 { 7 DataType elem[maxSize]; 8 int front[2],rear[2]; 9 }DualQueue; 10 void InitQueue(DualQue

数据结构之队列and栈总结分析

一.前言: 数据结构中队列和栈也是常见的两个数据结构,队列和栈在实际使用场景上也是相辅相成的,下面简单总结一下,如有不对之处,多多指点交流,谢谢. 二.队列简介 队列顾名思义就是排队的意思,根据我们的实际生活不难理解,排队就是有先后顺序,先到先得,其实在程序数据结构中的队列其效果也是一样,及先进先出.    队列大概有如下一些特性: 1.操作灵活,在初始化时不需要指定其长度,其长度自动增加(默认长度为32) 注:在实际使用中,如果事先能够预估其长度,那么在初始化时指定长度,可以提高效率    

栈模拟队列 队列模拟栈

代码如下: PS:做了一些测试,目前没问题.有问题请指正... 栈模拟队列 队列模拟栈

7 两个栈模拟队列,两个队列模拟栈

利用两个栈模拟队列 stack1,stack2 首先向stack1当中放入数据,如果需要输出数据,从stack2中delete数据,如果stack2为空,就把stack1中数据导入stack2 <span style="font-size:14px;">#include "static.h" #include <iostream> #include <stack> template<typename T> class

利用两个栈模拟队列

/************************************************** 题目:用两个栈模拟队列的基本操作1入队2,出队3判断队空4判断队满 s1做为输入栈的元素,一个个压栈相当于入队 s2作为输出队列的元素, 一个个出栈相当于出队 *************************************************/ #include <iostream> #include <cstdio> using namespace std; c