摘要:接觸過計算機\"數(shù)據(jù)結(jié)構(gòu)\"這門課程的朋友們都知道線性表是抽象數(shù)據(jù)型結(jié)構(gòu)。線性表是一種應用范圍十分廣泛的抽象化的數(shù)據(jù)類型。他不僅經(jīng)常作為某些數(shù)據(jù)團體的抽象描述以復合數(shù)據(jù)型的形式直接出現(xiàn)在程序中,而且作為多層次抽象化的基礎用于生成更復雜的抽象數(shù)據(jù)型。
關(guān)鍵詞:線性表;結(jié)構(gòu);排隊
線性表結(jié)構(gòu)可以動態(tài)地增長或收縮,在表中任何位置都可以訪問、插入或刪除元素。一個大的線性表可以分離成若干個子表,反之,若干個線性表也可以合并成一個大的線性表.一個線性表是由零個或多個具有相同類型的元素組成的一個有序集合,線性表的一個重要特性是表中所有元素都可以根據(jù)他們在表中的線性相對位置關(guān)系而唯一確定。
“排隊”是一種特殊形式的線性表,對于它,所有的插入操作在表的一端(后端)進行,而刪除操作都在表的另一端(前端)進行。排隊中元素排序的特點是先進先出。即最先進入隊列中的元素,最后才能移出。別看“排隊”是關(guān)于計算機數(shù)據(jù)結(jié)構(gòu)中的術(shù)語,但是,有關(guān)“排隊”的兩個操作入隊和出隊理論卻能在員工的輪崗中得到意想不到地運用。
例如,當我們?nèi)I業(yè)廳辦理業(yè)務時,我們進入大廳,迎面就會看見一排營業(yè)員5-6人順次而坐辦理業(yè)務。一般情況下,我們都會選擇離我們較近的窗口去辦理業(yè)務。這樣坐在后排的營業(yè)員的業(yè)務量比坐在前排的營業(yè)員業(yè)務量少很多?,F(xiàn)在,我們對于員工的管理都是按單筆業(yè)務提成金額以及業(yè)務量進行考核。營業(yè)員的提成工資和獎金都與你的業(yè)務量有直接關(guān)系。以前,我們也有營業(yè)員定時輪崗的安排。例如,營業(yè)員“趙、錢、孫、李、周、吳”六人,座次位置順序為:“(1)、(2)、(3)、(4)、(5)、(6)”每周輪換一次。位置顛倒為營業(yè)員:“吳、周李、孫、錢、趙”,座次為(1)、(2)、(3)、(4)、(5)、(6)。這種輪換方法很簡單,也易執(zhí)行。但是,經(jīng)過測算,除掉員工的個人因素,即營業(yè)員的年齡大小,對業(yè)務的熟練程度,反應速度快慢等因素外,員工業(yè)務量大小的差別還是很大。這樣就導致每個人的收入差別很大。長期這樣管理:一是對員工的不公平;二是會影響員工的工作積極性;三是會使員工之間,員工與管理者之間產(chǎn)生隔閡。誤認為有親疏之嫌,厚此薄彼之疑。所以,為了更好地解決這個矛盾,我們分析了“排隊”這種特殊的線性表,并且利用它的入隊、出隊操作原理對員工的崗位進行排序。
首先,為公平起見,先讓員工用抓鬮的方法抓出初始座次。然后,利用排隊的入隊操作原理將員工排初始座次。如抓鬮的順序為“趙、錢、孫、李、周、吳”,則先將“趙”員工進行入隊操作,即在隊的后端插入“趙”員工;然后,將“錢”員工入隊,“錢”排在趙的后面;然后將“孫”員工入隊,“孫”排在“錢”的后面;然后將“李”員工入隊,排在“孫”員工的后面;然后將“周”員工入隊,排在“李”員工的后面;最后將“吳”員工入隊,排在“周”員工后面。這樣一來,我們已經(jīng)按著入隊原理排好了員工的初始座次。即將表頭指針指向“趙”,表尾指針指向“吳”。
第一天的座次為:
趙 錢 孫 李 周 吳
12 34 5 6
表頭 表尾
然后,按著先出隊再入隊原理,每天進行位置輪換。輪崗排序如下:
將“趙”移出排在“吳”的后面,然后表頭指針指向“錢”,表尾指針指向“趙”。
依次第二天的座次為:
錢 孫 李 周 吳 趙
12 34 56
表頭表尾
然后,將“錢”移出排在“趙”的后面,表頭指針后移,指向“孫”,表尾指針指向“錢”。
依次第三天的座次為:
孫 李 周 吳 趙 錢
1 23 45 6
然后,將“孫”移出排在“錢”的后面,表頭指針后移,指向“李”,表尾指針指向“孫”。
依次第四天的座次為:
李 周 吳 趙 錢 孫
12 34 5 6
然后,將“李”移出排在“孫”的后面,表頭指針后移,指向“周”,表尾指針指向“李”。
依次第五天的座次為:
周 吳 趙 錢 孫 李
12 3 45 6
然后,將“周”移出排在“李”的后面,表頭指針后移,指向“吳”,表尾指針指向“周”。
最后第六天的座次為:
吳 趙 錢 孫 李 周
12 3 456
然后,第七天又從頭開始進行循環(huán)。
可以將“排隊”的入隊、出隊操作描述如下,其中函數(shù)
addone(i)把位置i按模maxlength加1:
functionaddone(i:integer):interger; i為整形變量
begin
return(i mod maxlength+1)
end;{addone}
procedureENQUEUE (x:elementtype; varQ:QUEUE); 入隊操作過程
x為數(shù)組元素 Q為隊列變量
begin
ifaddone(addone(Q.rear))=Q.frontthen
error('queueisfull'))
else begin
Q.rear:=addone(Q.rear);
Q.elements[Q.rear]:=x
end
end;{ENQUEUE}
procedureDEQUEUE(varQ:QUEUE);
begin
ifEMPTY(Q) then
error('queue is empty')
else
Q.front:=addone(Q.front)
end;{DEQUEUE}
按照這種排序進行輪崗,第一、可以盡量公平合理地對待每一個員工;第二、如此排序就避免了忙閑不均的情況,充分調(diào)動了員工的積極性;第三、構(gòu)建了員工與員工之間的和諧,員工與管理者之間的和諧;第四、還將艱澀難懂的“計算機數(shù)據(jù)結(jié)構(gòu)”的“排隊”理論很好地運用到了實際的管理工作中。
綜上所述,只要我們是出于公心,并且對實際管理工作中的問題勤于思考,那么就會有辦法解決得很好。
作者簡介:豐滿(1970~),1994年畢業(yè)于哈爾濱工業(yè)大學夜大學計算機科學及應用專業(yè),獲工學學士學位。先后從事過多種基層工作,從1998年開始從事通信站營業(yè)廳前臺管理工作。