def priority_queue(input_data):
# 解析输入数据
elements = []
# 处理输入字符串,移除所有空格和中文括号
input_data = input_data.replace(' ', '').replace('(', '(').replace(')', ')')
# 分割输入数据
input_parts = input_data.split('),(')
# 清理多余的括号
input_parts = [part.replace('(', '').replace(')', '') for part in input_parts if part]
# 存储 (priority, data) 和插入顺序
queue = []
insertion_order = 0 # 用于记录插入顺序
for part in input_parts:
if not part:
continue
# 处理分隔符可能是逗号或斜杠的情况
if ',' in part:
data, priority = part.split(',', 1)
elif '/' in part:
data, priority = part.split('/', 1)
else:
continue # 跳过无效格式
try:
data = int(data)
priority = int(priority)
except ValueError:
continue # 跳过无法转换为整数的数据
# 检查是否已存在相同的 (data, priority)
duplicate = False
for item in queue:
if item[1] == data and item[0] == priority:
duplicate = True
break
if not duplicate:
queue.append((priority, data, insertion_order))
insertion_order += 1
# 排序:先按优先级降序,同优先级按插入顺序升序
queue.sort(key=lambda x: (-x[0], x[2]))
# 提取 data 部分
result = [str(item[1]) for item in queue]
return ','.join(result)
# 自定义输入测试
if __name__ == "__main__":
print("请输入队列数据,格式如:(10,1),(20,1),(30,2)")
print("输入完成后按Enter键执行")
user_input = input("请输入: ")
output = priority_queue(user_input)
print("输出结果:")
print(output)