10個隊中非空佇列按佇列號從小到大的順序串接成一條鏈
問題及程式碼:
/*
* Copyright (c) 2016, 煙臺大學計算機與控制工程學院
* All rights reserved.
* 檔名稱:queue.cpp
* 作 者:單昕昕
* 完成日期:2016年3月31日
* 版 本 號:v1.0
* 問題描述:輸入n(由使用者輸入)個10以內的數,每輸入i(0≤i≤9),就把它插入到第i號佇列中。
* 最後把10個隊中非空佇列,按佇列號從小到大的順序串接成一條鏈,並輸出該鏈的所有元素。
* 程式輸入:n(由使用者輸入)個10以內的數。
* 程式輸出:鏈隊。
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<malloc.h>
using namespace std;
const int MaxSize=10;
typedef struct node
{
int data;
struct node *next;
} QNode;
void Insert(QNode *hq[],QNode *tq[],int x) //將x插入到相應佇列中
{
QNode *s;
s=(QNode *)malloc(sizeof(QNode)); //建立一個節點
s->data=x;
s->next=NULL;
if (hq[x]==NULL) //對應的佇列為空隊時
{
hq[x]=s;
tq[x]=s;
}
else
{
tq[x]->next=s; //將*s節點鏈到tq[x]所指節點之後
tq[x]=s; //讓tq[x]仍指向尾節點
}
}
void Create(QNode *hq[],QNode *tq[]) //根據使用者輸入建立佇列
{
int n,x,i;
printf("n=");
scanf("%d",&n);
printf("輸入 %d 個數(0-9):\n",n);
for (i=0; i<n; i++)
{
scanf("%d",&x);
Insert(hq,tq,x);
}
}
void Link(QNode *hq[],QNode *tq[]) //將非空佇列連結起來並輸出
{
QNode *head,*tail; //總連結串列的首節點指標和尾節點指標
int first=1,i;
for (i=0; i<MaxSize; i++)
{
if (hq[i]!=NULL && first==1) //遇到第一個非空佇列
{
head=hq[i]; //讓head指向第一個資料節點
tail=tq[i];
first=0;
}
if (hq[i]!=NULL && first==0) //遇到其他非空佇列
{
tail->next=hq[i];
tail=tq[i];
}
}
printf("\n輸出所有元素:");
while (head!=NULL)
{
printf("%d ",head->data);
head=head->next;
}
printf("\n");
}
int main()
{
int i;
QNode *hq[MaxSize],*tq[MaxSize];
//各佇列的隊頭hq和隊尾指標tq
for (i=0; i<MaxSize; i++)
hq[i]=tq[i]=NULL; //置初值
Create(hq,tq); //建立佇列
Link(hq,tq); //連結各佇列並輸出
return 0;
}
執行結果:
(⊙o⊙)…這道題。。我做起來挺困難的,然後參考了一下~
相關文章
- 【資料結構】佇列(順序佇列、鏈佇列)的JAVA程式碼實現資料結構佇列Java
- 刷題系列 - 合併兩個順序佇列為一個新的佇列佇列
- 佇列的順序儲存--迴圈佇列的建立佇列
- 佇列-順序儲存佇列
- 順序佇列基本操作佇列
- 棧,佇列,優先順序佇列簡單介面使用佇列
- Redis實現任務佇列、優先順序佇列Redis佇列
- 佇列 優先順序佇列 python 程式碼實現佇列Python
- 佇列順序性引發的思考佇列
- 佇列的順序儲存結構佇列
- 封裝優先順序佇列封裝佇列
- [PY3]——實現一個優先順序佇列佇列
- 順序迴圈佇列的介面設計佇列
- 使用C#實現順序佇列C#佇列
- 如何保證訊息佇列的順序性?佇列
- Facebook的分散式優先順序佇列FOQS分散式佇列
- Java優先順序佇列DelayedWorkQueue原理分析Java佇列
- 佇列(楊輝三角)——鏈式佇列佇列
- 個推基於 Apache Pulsar 的優先順序佇列方案Apache佇列
- 鏈式佇列佇列
- 第七週 專案一 建立順序環形佇列佇列
- 阻塞佇列一——java中的阻塞佇列佇列Java
- 佇列、阻塞佇列佇列
- 利用順序儲存結構實現雙端佇列的入隊和出隊操作佇列
- 帶鏈佇列類佇列
- 【資料結構】順序佇列的實現(c++)資料結構佇列C++
- 陣列排序(從小到大)陣列排序
- 佇列的一種實現:迴圈佇列佇列
- js函式整合佇列順序執行外掛JS函式佇列
- 佇列-單端佇列佇列
- 高效利用佇列的空間佇列
- ReentrantLock的條件佇列ReentrantLock佇列
- 鏈式佇列—用連結串列來實現佇列佇列
- 陣列模擬佇列 以及佇列的複用(環形佇列)陣列佇列
- 鏈式儲存的佇列佇列
- RMQ——支援合併和優先順序的訊息佇列MQ佇列
- 佇列 和 迴圈佇列佇列
- 【佇列】【懶排序】佇列Q佇列排序