VB.Net中的隊(duì)列類在System.Collections.Generic命名空間中,名字叫Queue,是一個(gè)泛型類。
創(chuàng)新互聯(lián)建站擁有網(wǎng)站維護(hù)技術(shù)和項(xiàng)目管理團(tuán)隊(duì),建立的售前、實(shí)施和售后服務(wù)體系,為客戶提供定制化的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、眉山聯(lián)通機(jī)房解決方案。為客戶網(wǎng)站安全和日常運(yùn)維提供整體管家式外包優(yōu)質(zhì)服務(wù)。我們的網(wǎng)站維護(hù)服務(wù)覆蓋集團(tuán)企業(yè)、上市公司、外企網(wǎng)站、商城網(wǎng)站建設(shè)、政府網(wǎng)站等各類型客戶群體,為全球上千企業(yè)提供全方位網(wǎng)站維護(hù)、服務(wù)器維護(hù)解決方案。
實(shí)例化該類:
Dim myQueue As QueueInt32
myQueue = new QueueInt32();
然后可以通過(guò)Queue中的Enqueue和Dequeue函數(shù)進(jìn)行入隊(duì)出隊(duì)操作:
With myQueue
.Enqueue(1)
.Enqueue(2)
.Enqueue(3)
.Enqueue(4)
.Enqueue(5)
End With
For i = 0 To 5 Step 1
Console.WriteLine(myQueue.Dequeue())
Next i
顯示結(jié)果:
1
2
3
4
5
先乘除后加減,從右到左運(yùn)算。
VB中運(yùn)算符的計(jì)算優(yōu)先級(jí)順序如下:算術(shù)運(yùn)算符和串聯(lián)運(yùn)算符求冪(^)一元標(biāo)識(shí)和非(+、–)乘法和浮點(diǎn)除法(*、/)整數(shù)除法(\)取模(Mod)加法和減法(+、–),字符串連接(+)字符串連接()算術(shù)移位()比較運(yùn)算符。
擴(kuò)展資料
vb點(diǎn)虐 ?特性:
1、vb點(diǎn)虐 完全集成到 Visual Studio 集成開(kāi)發(fā)環(huán)境中,在這種集成開(kāi)發(fā)環(huán)境與 VB 在若干方面有差異。主要體現(xiàn)在窗體的布局以及菜單等方面都有所不同。
2、vb點(diǎn)虐 項(xiàng)目與 VB 不同。它使用基于文件夾的模型,所有項(xiàng)目均放置在項(xiàng)目文件夾層次結(jié)構(gòu)中。
3、vb點(diǎn)虐 中使用ado點(diǎn)虐 來(lái)訪問(wèn)數(shù)據(jù)庫(kù),ado點(diǎn)虐 是點(diǎn)虐 Framework的一部分。在 vb點(diǎn)虐 中實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)的方法主要有兩種。
其一是在程序設(shè)計(jì)階段,通過(guò)創(chuàng)建、配置數(shù)據(jù)適配器 DataAdapter 和生成數(shù)據(jù)集 DataSet;其二是在運(yùn)行中,通過(guò)編程方式動(dòng)態(tài)創(chuàng)建配置數(shù)據(jù)適配器和創(chuàng)建、生成數(shù)據(jù)集。
4、在 vb點(diǎn)虐 中是使用asp點(diǎn)虐 技術(shù)來(lái)編寫 Web 頁(yè)面的。在asp點(diǎn)虐 中使用的也不是腳本語(yǔ)言,而是真正意義的編程語(yǔ)言。
憑借asp點(diǎn)虐 的 Web 應(yīng)用程序、XML Web Services 等基于 Web 的功能,使得 vb點(diǎn)虐 開(kāi)發(fā) Web 頁(yè)面與開(kāi)發(fā) Windows 應(yīng)用程序很相似,Web 頁(yè)面代碼也顯得有條有理了。
5、vb點(diǎn)虐 已經(jīng)成為完全的面向?qū)ο蟮木幊陶Z(yǔ)言,并且新增更多語(yǔ)言特性。
/*bank_sim.h*/
#ifndef?BANK_SIM_H
#define?BANK_SIM_H
#include?stddef.h
#define?COUNTER?????????8??/*?銀行共有?8?個(gè)營(yíng)業(yè)窗口?*/
#define?ARRIVAL???COUNTER??/*?客戶到達(dá)事件?*/
typedef?struct?{
size_t?OccurTime,?NType;?/*?事件發(fā)生時(shí)刻;事件類型?*/
}?Event;?/*?鏈表數(shù)據(jù)元素類型?*/
typedef?struct?Enode?{
Event?event;
struct?Enode?*next;
}?Enode,?*EventList;
typedef?struct?{
size_t?ArrTime,?Duration;??/*?到達(dá)時(shí)刻;辦理時(shí)間?*/
}?QElem;??/*?隊(duì)列數(shù)據(jù)元素類型?*/
typedef?struct?Qnode?{
QElem?Cust;??/*?客戶記錄?*/
struct?Qnode?*next;
}?Qnode,?*Qptr;
typedef?struct?{
Qptr?front,?rear;?/*?隊(duì)頭指針,隊(duì)尾指針?*/
}?LinkQueue;
int?bank_open(?void?);?????/*?初始化操作?*/
int?CustArr(?void?);??/*?處理客戶到達(dá)事件?*/
int?CustDepart(?void?);????/*?處理客戶離開(kāi)事件?*/
void?DelFirst(?void?);??/*?刪除事件表第一個(gè)節(jié)點(diǎn),并把值賦給en?*/
int?DeQueue(?LinkQueue?*?);??/*?出隊(duì)?*/
void?DestroyAll(?void?);??/*?銷毀鏈表和隊(duì)列?*/
void?DestroyList(?EventList?);?/*?銷毀鏈表?*/
void?DestroyQueue(?LinkQueue?*?);?/*?銷毀隊(duì)列?*/
int?EnQueue(?LinkQueue?*,?QElem?);??/*?進(jìn)隊(duì)?*/
EventList?InitList(?void?);?/*?創(chuàng)建鏈表?*/
int?InitQueue(?LinkQueue?*?);?/*?建立空隊(duì)列?*/
size_t?Minimun(?void?);??/*?求長(zhǎng)度最短隊(duì)列?*/
int?OrderInsert(?EventList,?Event?);?/*?插入事件表?*/
size_t?QueueLength(?LinkQueue?);??/*?計(jì)算隊(duì)列長(zhǎng)度?*/
#endif
/////////////////
/*bank_sim.c*/
#include?stddef.h
#include?stdio.h
#include?stdlib.h
#include?time.h
#include?"../header/bank_sim.h"
#define?CLOSETIME?????480??/*?每天工作?8?小時(shí)(?60?*?8?=?480?)?*/
#define?MAX_TIME???????30??/*?事務(wù)處理時(shí)間不超過(guò)?30?分鐘?*/
#define?INTERVAL????????5??/*?每?5?分鐘至少來(lái)一位客人?*/
EventList?ev;??????????/*?事件表?*/
Event?en;??????????????/*?事件?*/
LinkQueue?q[COUNTER];??/*?客戶隊(duì)列?*/
QElem?customer;????????/*?客戶記錄?*/
size_t?TotalTime,?CustNum;??/*?累計(jì)客戶逗留時(shí)間,客戶數(shù)?*/
/*?Begin?of?bank_open?05-9-17?00:40?*/
int?bank_open(?void?)??/*?初始化操作?*/
{
size_t?i;
srand()(?time(NULL)?);??????????/*?生成隨機(jī)數(shù)種子?*/
CustNum?=?TotalTime?=?0;??????/*?初始化累計(jì)時(shí)間和客戶數(shù)?*/
if?(?!(?ev?=?InitList()?)?)?{??/*?初始化事件鏈表?*/
return?0;??/*?創(chuàng)建失敗,返回?0?*/
}
en.OccurTime?=?0;
en.NType?=?ARRIVAL;??/*?設(shè)定第一個(gè)客戶到達(dá)事件?*/
if?(?!OrderInsert(ev,?en)?)?{??/*?插入事件表?*/
DestroyList(?ev?);
return?0;??/*?插入失敗,返回0?*/
}
for?(?i?=?0;?i??COUNTER;?++i?)?{??/*?置空隊(duì)列?*/
if?(?!InitQueue(q[i])?)?{
DestroyList(?ev?);
for?(?i?=?0;?q[i].front;?++i?)?{
DestroyQueue(?q[i]?);
}
return?0;??/*?創(chuàng)建隊(duì)列失敗,返回?0?*/
}
}
return?1;
}?/*?End?of?bank_open?*/
/*?Begin?of?CustArr?05-9-17?08:20?*/
int?CustArr(?void?)?/*?處理客戶到達(dá)事件?*/?
{
int?durtime,?intertime;
QElem?e;
size_t?i;
++CustNum;
/*?生成隨機(jī)數(shù)?*/
durtime?=?rand()()?/?(RAND_MAX?/?MAX_TIME?+?1)?+?1;?/*?事務(wù)處理時(shí)間不超過(guò)?MAX_TIME?分鐘?*/
intertime?=?rand()()?/?(RAND_MAX?/?INTERVAL);?/*?INTERVAL?分鐘內(nèi)有一位客人到達(dá)銀行,0?表示客戶同時(shí)到達(dá)?*/
e.ArrTime?=?en.OccurTime;
e.Duration?=?durtime;
en.OccurTime?+=?intertime;??????????/*?下一客戶到達(dá)時(shí)間?*/
if?(?en.OccurTime??CLOSETIME?)?{???/*?銀行尚未關(guān)門,插入事件表?*/
if?(?!OrderInsert(ev,?en)?)?{???/*?插入失敗?*/
DestroyAll();
return?0;
}
}
i?=?Minimun();??/*?求長(zhǎng)度最短隊(duì)列?*/
if?(?!EnQueue(q[i],?e)?)?{
DestroyAll();
return?0;
}
/*?如果此時(shí)?i?號(hào)窗口只有一位顧客,則馬上把他的離開(kāi)事件插入事件表?*/
if?(?QueueLength(q[i])?==?1?)?{
en.NType?=?i;
en.OccurTime?=?e.ArrTime?+?durtime;
if?(?!OrderInsert(ev,?en)?)?{
DestroyAll();
return?0;
}
}
return?1;
}?/*?End?of?CustArr?*/
/*?Begin?of?CustDepart?05-9-17?09:00?*/
int?CustDepart(?void?)?/*?處理客戶離開(kāi)事件?*/
{
Qptr?tmp;
size_t?i?=?en.NType;
if?(?!DeQueue(?q[i]?)?)?{??/*?刪除排頭客戶?*/
DestroyAll();
return?0;
}
TotalTime?=?TotalTime?+?en.OccurTime?-?customer.ArrTime;?/*?累計(jì)逗留時(shí)間?*/
if?(?q[i].front?!=?q[i].rear?)?{
tmp?=?q[i].front-next;
customer?=?tmp-Cust;
en.OccurTime?+=?customer.Duration;
if?(?!OrderInsert(ev,?en)?)?{
DestroyAll();
return?0;
}
}
return?1;
}??/*?End?of?CustDepart?*/
/*?Begin?of?DelFirst?05-9-17?00:45?*/
void?DelFirst(?void?)??/*?刪除事件表第一個(gè)節(jié)點(diǎn),并把值賦給en?*/
{
EventList?tmp?=?ev-next;
ev-next?=?tmp-next;
en?=?tmp-event;
free(tmp);
}?/*?End?of?DelFirst?*/
/*?Begin?of?DeQueue?05-9-17?08:35?*/
int?DeQueue(LinkQueue?*Q)??/*?出隊(duì)?*/
{
Qptr?tmp;
if?(?Q-front?==?Q-rear?)?{
return?0;??/*?如果隊(duì)列已空,返回?0?*/
}
tmp?=?Q-front-next;
customer?=?tmp-Cust;
Q-front-next?=?tmp-next;
if?(?Q-rear?==?tmp?)?{??/*?如果隊(duì)尾元素被刪除,則隊(duì)尾指針要指向頭結(jié)點(diǎn)?*/
Q-rear?=?Q-front;
}
free(tmp);
return?1;
}??/*?End?of?DeQueue?*/
/*?Begin?of?DestroyAll?05-9-17?01:15?*/
void?DestroyAll(?void?)??/*?銷毀鏈表和隊(duì)列?*/
{
size_t?i;
DestroyList(?ev?);
for?(?i?=?0;?i??COUNTER;?++i?)?{
DestroyQueue(?q[i]?);
}
}?/*?End?of?DestroyAll?*/
/*?Begin?of?DestroyList?05-9-16?23:00?*/
void?DestroyList(?EventList?L?)?/*?銷毀鏈表?*/
{
EventList?T?=?L;
for?(?L?=?L-next;?L;?T?=?L,?L?=?L-next?)?{
free(?T?);
}
free(?T?);
}?/*?End?of?DestroyList?*/
/*?Begin?of?DestroyQueue?05-9-17?00:30?*/
void?DestroyQueue(LinkQueue?*Q)?/*?銷毀隊(duì)列?*/
{
while?(?Q-front?)?{
Q-rear?=?Q-front-next;
free(?Q-front?);
Q-front?=?Q-rear;
}
}?/*?End?of?DestroyQueue?*/
/*?Begin?of?EnQueue?05-9-17?01:20?*/
int?EnQueue(LinkQueue?*Q,?QElem?e)??/*?進(jìn)隊(duì)?*/
{
Qptr?tmp?=?malloc(?sizeof?*tmp?);
if?(?!tmp?)?{
return?0;?/*?進(jìn)隊(duì)失敗,返回?0?*/
}
tmp-Cust?=?e;
tmp-next?=?NULL;
Q-rear-next?=?tmp;
Q-rear?=?tmp;
return?1;
}?/*?End?of?EnQueue?*/
/*?Begin?of?InitList?05-9-16?22:30?*/
EventList?InitList(?void?)??/*?創(chuàng)建鏈表?*/
{
EventList?h;
if?(?!(?h?=?malloc(sizeof?*h)?)?)?{??/*?創(chuàng)建失敗,返回?NULL?*/
return?NULL;
}
h-next?=?NULL;
return?h;
}?/*?End?of?InitList?*/
/*?Begin?of?InitQueue?05-9-16?22:00?*/
int?InitQueue(LinkQueue?*Q)??/*?建立空隊(duì)列?*/
{
Q-rear?=?Q-front?=?malloc(?sizeof?*Q-front?);
if?(?!Q-front?)?{??/*?創(chuàng)建失敗,返回?0?*/
return?0;
}
Q-front-next?=?NULL;
return?1;
}?/*?End?of?InitQueue?*/
/*?Begin?of?Minimun?05-9-17?01:05?*/
size_t?Minimun(?void?)??/*?求長(zhǎng)度最短隊(duì)列?*/
{
size_t?h?=?0,?i,?j,?k;
j?=?QueueLength(q[0]);
for?(?i?=?1;?i??COUNTER;?++i?)?{
k?=?QueueLength(q[i]);
if?(?j??k?)?{
j?=?k;
h?=?i;
}
}
return?h;
}?/*?End?of?Minimun?*/
/*?Begin?of?OrderInsert?05-9-16?23:15?*/
int?OrderInsert(EventList?ev,?Event?a)??/*?插入事件表?*/
{
EventList?tmp,?h?=?ev,?e?=?ev-next;
if?(?!(?tmp?=?InitList()?)?)?{??/*?分配空間失敗,返回?0?*/
return?0;
}
/*?插入?*/
tmp-event?=?a;
while?(?e??(a.OccurTime??e-event.OccurTime)?)?{
h?=?e;
e?=?e-next;
}
h-next?=?tmp;
tmp-next?=?e;
return?1;
}?/*?End?of?OrderInsert?*/
/*?Begin?of?QueueLength?05-9-17?01:00?*/
size_t?QueueLength(LinkQueue?Q)?/*?計(jì)算隊(duì)列長(zhǎng)度?*/
{
size_t?i;
for?(?i?=?0;?Q.front-next;?++i?)?{
Q.front?=?Q.front-next;
}
return?i;
}?/*?End?of?QueueLength?*/
/////////////////////
/*main.c*/
#include?stdio.h
#include?stdlib.h
#include?"header/bank_sim.h"
extern?EventList?ev;???/*?事件表?*/
extern?Event?en;???????/*?事件?*/
extern?size_t?TotalTime,?CustNum;??/*?累計(jì)客戶逗留時(shí)間,客戶數(shù)?*/
int?main(?void?)
{
if?(?!bank_open()?)?{
return?EXIT_FAILURE;??/*?初始化失敗,退出?*/
}
while?(?ev-next?)?{
DelFirst();??/*?刪除事件表第一個(gè)節(jié)點(diǎn),并把值賦給en?*/
if?(?en.NType?==?ARRIVAL?)?{
if?(?!CustArr()?)?{
return?EXIT_FAILURE;
}
}?else?if?(?!CustDepart()?)?{
return?EXIT_FAILURE;
}
}
printf(?"Average?Stay?Time:%.2f?minutes\n",?(float)TotalTime?/?CustNum?);
puts(?"Press?ENTER?to?quit..."?);
getchar()();
DestroyAll();
return?EXIT_SUCCESS;
}
參考以下內(nèi)容: