Python:【问题描述】自定义队列类,队列元素要么全为整型,要么全为字符串,也可以是空队列。并实现入队、出队操作(入队元素必须与队列中已有元素类型相同,如为空队列,则无此要求)。

【问题描述】自定义队列类,队列元素要么全为整型,要么全为字符串,也可以是空队列。并实现入队、出队操作(入队元素必须与队列中已有元素类型相同,如为空队列,则无此要求)。

【输入形式】见程序。
【输出形式】入队或出队的结果。
【样例说明1】创建队列时,若元素不符合要求,给出以下提示信息。

【样例输出1】All elements must be integer or string.

【样例说明2】若入队列操作成功,则给出以下提示信息,并输出队列内容。

【样例输出2】Success to joined a new element.
[1,2,3,4]

【样例说明3】若出队成功,则输出队列内容。

【样例输出3】 [2, 3, 4]

【样例说明4】待入队的元素若与队列中已有元素类型不相同,给出以下提示信息。

【样例输出4】Cannot be joined. Type Error.

【样例说明5】若队列已为空,则出队操作给出以下提示信息。

【样例输出5】The queue is empty.

class MyQueue:
	def isintorstr(self,x):
        if isinstance(x,int) or isinstance(x,str):
            return True
        else:
            print('All elements must be integer or string.')
            return False
    def __init__(self,*a):
        a=list(a)
        self.queue = []
        if len(a) !=0:
            if isinstance(a[0], int) or isinstance(a[0],str):
                self.queue.append(a[0])
                for i in range(1,len(a)):
                    if isinstance(a[i],int) or isinstance(a[i],str) and isinstance(a[i],type(a[0])):
                        self.queue.append(a[i])
                    else:
                        print('All elements must be integer or string.')
                        self.queue.clear()
            else:
                print('All elements must be integer or string.')
    def enqueue(self,d):
        if len(self.queue) == 0:
            if self.isintorstr(d) == True:
                self.queue.append(d)
                print('Success to joined a new element.')
                print(self.queue)
        else:
            if type(d)!=type(self.queue[0]):
                print('Cannot be joined. Type Error.')
            else:
                self.queue.append(d)
                print('Success to joined a new element.')
                print(self.queue)
        
    def dequeue(self):
        if len(self.queue)==0:
            print('The queue is empty.')
        else:
            del self.queue[0]
            print(self.queue)
            
if  __name__  ==  '__main__':
q1  =  MyQueue(8,9,2)
q1.enqueue(7)    #入队
q1.dequeue()      #出队
q1.enqueue('6')
q2  =  MyQueue()
q2.enqueue(2)
q2.dequeue()
q2.dequeue()
q3  =  MyQueue(2,3,'5')        
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
队列是一种线性数据结构,遵循先进先出(FIFO)的原则。队列有两个基本操作入队(enqueue)和出队(dequeue)。队列入队操作将新元素添加到队列的末尾,而出队操作则从队列的头部删除元素。此外,队列还有一个取对首元素操作(peek),该操作返回队列的头部元素,但不删除它。 下面是一个简单的队列实现,包括入队出队、peek和判断队列是否为操作。 ```python class Queue: def __init__(self): self.queue = [] def enqueue(self, item): self.queue.append(item) def dequeue(self): if not self.is_empty(): return self.queue.pop(0) def peek(self): if not self.is_empty(): return self.queue[0] def is_empty(self): return len(self.queue) == 0 ``` 在上面的实现,我们使用Python的列表来实现队列。我们在__init__方法初始化队列列表。enqueue方法将元素添加到队列的末尾,使用列表的append方法实现。dequeue方法从队列的头部删除元素,使用列表的pop方法实现。peek方法返回队列的头部元素,但不删除它,使用列表的索引操作实现。is_empty方法用来判断队列是否为,如果队列的长度为0,则为。 我们可以使用以下代码测试我们的队列实现: ```python q = Queue() q.enqueue(1) q.enqueue(2) q.enqueue(3) print(q.peek()) # 输出1 print(q.dequeue()) # 输出1 print(q.dequeue()) # 输出2 print(q.is_empty()) # 输出False print(q.dequeue()) # 输出3 print(q.is_empty()) # 输出True print(q.dequeue()) # 输出None,因为队列已经为 ``` 输出结果如下: ``` 1 1 2 False 3 True None ``` 我们可以看到,我们的队列实现成功地完成了入队出队、peek和判断队列是否为操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值