[アルゴリズムとデータ構造の概要] Python配列を使用してキューの機能を実現する

キューを実装する

タイトルの説明:

1.配列を使用して、次のメソッドを必要とするキューを実装します

  • エンキュー
  • デキュー
  • キュー要素を表示する
  • キューのサイズを表示する

2.キュー操作

  • 新しいキューを作成する(q1という名前)
  • 小から大へのインデックスによる配列ls_1のエンキュー
  • 出力キュー内の要素の数
  • チームの最初の要素を取得して変数q1_gettopに保存し、スタック内の要素の数を確認します
  • スタックの一番上の要素をポップし、変数s1_poptopに保存して、スタック内の要素の数を確認します

プロンプト

1.キュー

ここに画像の説明を挿入

はじめに

  • 共通のデータ構造
  • FIFO先入れ先出し:最初に挿入されたエレメントが最初に出てくる

  • 配列を使用してキューを実装します。デキュー操作の後、配列スペースの前半は使用されません

2.コード補完

class MyQueue:
    def __init__(self):
        self.arr = []
        self.front = 0   #队首索引(指针)
        self.rear = 0    #队尾索引(指针)
    
    #判断队列是否为空
    def is_empty(self):
        # 请输入你的代码
        return self.rear == self.front
    
    #返回队列大小
    def size(self):
        # 请输入你的代码
        return self.rear - self.front
    
    #返回队列首元素
    def get_front(self):
        #先判断队列是否为空,为空返回None,否则返回队首元素
        # 请输入你的代码
        if self.is_empty():
            return None
        else:
            return self.arr[self.front]
    #返回队尾元素
    def get_rear(self):
        #先判断队列是否为空,为空返回None,否则返回队尾元素
        # 请输入你的代码
        if self.is_empty():
            return None
        else:
            return self.arr[self.rear-1]

    #出队(更换队首)
    def de_queue(self):
        #先判断队列是否为空
        # 请输入你的代码
        if self.rear > self.front:
            self.front += 1
        else:
            print('队列已空')
           
    
    #入队
    def en_queue(self, item):
        #队尾插入新元素后,注意更新队尾索引(指针)
        # 请输入你的代码
        self.arr.append(item)
        self.rear += 1

キュー操作

新しいキューを作成する(q1という名前)

# 请输入你的代码
q1 = MyQueue()
q1
<__main__.MyQueue at 0x7d42408>

小から大へのインデックスによる配列ls_1のエンキュー

ls_1 = list(range(1,10,2))
ls_1
[1, 3, 5, 7, 9]
for i in ls_1:
    # 请输入你的代码
    q1.en_queue(i)

出力キュー内の要素の数

# 请输入你的代码
q1.size()
5

キューの最初の要素を取得し、変数q1_getfrontに保存して、キュー内の要素の数を出力します

# 请输入你的代码
q1_getfront = q1.get_front()
print('队首元素为:{}'.format(q1_getfront))
print('队列长度为:{}'.format(q1.size()))
队首元素为:1
队列长度为:5

末尾の要素を取得し、変数q1_getrearに保存し、キュー要素の数を出力します

# 请输入你的代码
q1_getrear = q1.get_rear()
print('队尾元素为:{}'.format(q1_getrear))
print('队列长度为:{}'.format(q1.size()))
队尾元素为:9
队列长度为:5

デキュー操作を実行し、ヘッドインデックス、テールインデックス、およびチームの前後のキューエレメントの数を出力します。

# 请输入你的代码
print('出队前队首索引为:{},队尾索引为:{}'.format(q1.front,q1.rear))
print('*******************')
q1.de_queue()
print('出队后队首索引为:{},队尾索引为:{}'.format(q1.front,q1.rear))
print('出队之后队列元素个数为:{}'.format(q1.size()))
出队前队首索引为:0,队尾索引为:5
*******************
出队后队首索引为:1,队尾索引为:5
出队之后队列元素个数为:4
公開された42の元の記事 賞賛された28 訪問4961

おすすめ

転載: blog.csdn.net/KaelCui/article/details/105393046