999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

單鏈表算法的動(dòng)態(tài)演示系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

2015-09-27 06:48:10謝嘉徐勇梁后軍
現(xiàn)代計(jì)算機(jī) 2015年28期
關(guān)鍵詞:系統(tǒng)

謝嘉,徐勇,梁后軍

(安徽財(cái)經(jīng)大學(xué)計(jì)算機(jī)系,蚌埠 233030)

單鏈表算法的動(dòng)態(tài)演示系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

謝嘉,徐勇,梁后軍

(安徽財(cái)經(jīng)大學(xué)計(jì)算機(jī)系,蚌埠233030)

0 引言

《數(shù)據(jù)結(jié)構(gòu)》是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的核心課程,它著力培養(yǎng)學(xué)生對(duì)于數(shù)據(jù)分析和算法規(guī)劃的綜合能力,而傳統(tǒng)的教學(xué)模式使得算法教學(xué)相對(duì)困難,本系統(tǒng)的出現(xiàn)正是為了解決這樣一個(gè)現(xiàn)狀,系統(tǒng)通過編程技術(shù)實(shí)現(xiàn)了《數(shù)據(jù)結(jié)構(gòu)》經(jīng)典算法的動(dòng)態(tài)演示,使算法理解起來更為直觀。本系統(tǒng)主要展示了單鏈表的插入和刪除算法。

1 系統(tǒng)設(shè)計(jì)

本動(dòng)態(tài)演示系統(tǒng)針對(duì)由清華大學(xué)出版社出版的C語言版《數(shù)據(jù)結(jié)構(gòu)》教材進(jìn)行設(shè)計(jì)與開發(fā),由于采用C#語言來編寫C語言算法的演示動(dòng)畫,所以需要使用C#語言按照C語言風(fēng)格編寫一樣的算法流程來控制整個(gè)演示系統(tǒng),實(shí)際運(yùn)行的是C#版本的相應(yīng)算法,其中變量跟蹤模塊顯示的地址是依據(jù)GCC編譯器編譯的C語言的可執(zhí)行文件的內(nèi)存布局模擬出來的,基于這樣的基本思想,本演示系統(tǒng)得以開發(fā)。

引入多線程的目的是為了減小本數(shù)據(jù)結(jié)構(gòu)動(dòng)態(tài)演示系統(tǒng)在并發(fā)執(zhí)行時(shí)所付出的時(shí)間和空間的開銷。因?yàn)楦缸泳€程的并行,所以資源的共享和互斥問題顯得尤為重要。歸納起來面臨的問題有:

(1)系統(tǒng)中的控件屬于子線程,子線程也擁有自己的窗口,但在Debug版本中卻不能隨便修改窗口控件的屬性,否則會(huì)產(chǎn)生跨線程操作的異常。采取的措施是在線程構(gòu)造函數(shù)中設(shè)其控件屬性為假。

(2)多線程編程會(huì)遇到線程的同步與互斥問題,為了簡化操作,避免因?yàn)榫€程間異步執(zhí)行而導(dǎo)致數(shù)據(jù)的不一致性。采取的措施是在子線程開啟后,部分變量僅僅在子線程被構(gòu)造時(shí)被賦值,或者只有主線程才會(huì)修改其值,這樣保證了操作的原子性。

(3)主線程控制子線程的開啟、掛起、恢復(fù)與停止,而C#提供的 Thread類的 Abort、Suspend、Resume方法,均有一定的缺陷,其中部分函數(shù)已經(jīng)被微軟淘汰,這些函數(shù)會(huì)因?yàn)橘Y源未及時(shí)釋放而異常。又不能通過約束使用者的正確操作來保證系統(tǒng)的健壯性,所以只能通過設(shè)置開關(guān)變量來實(shí)現(xiàn)。

2 系統(tǒng)設(shè)計(jì)

該數(shù)據(jù)結(jié)構(gòu)演示系統(tǒng)的算法核心包括三部分,分別是C語言版本源代碼的滾動(dòng)、對(duì)算法中出現(xiàn)的棧變量和堆變量的跟蹤以及動(dòng)畫的同步演示,由于系統(tǒng)中涉及的每個(gè)算法,都是由這核心的三個(gè)步驟組成,因此以單鏈表的插入算法為例來敘述整個(gè)實(shí)現(xiàn)的核心思想。

本系統(tǒng)首先實(shí)例化一個(gè)Model_List_Control類對(duì)象,即演示界面子窗口,通過TreeView控件選擇需要演示的具體算法,不同的選擇將導(dǎo)致以不同參數(shù)實(shí)例化的List_Thread類對(duì)象,即子線程對(duì)象的創(chuàng)建。在單擊開始按鈕時(shí),會(huì)調(diào)用List_Thread類的t_Start函數(shù),這是真正意義上的子線程的開啟。此時(shí)子線程與主線程并行。子線程不停地演示經(jīng)典算法,主線程則用于控制子線程的狀態(tài),例如掛起、恢復(fù)、停止以及設(shè)置其休眠時(shí)間。

該系統(tǒng)采用了面向?qū)ο蟮乃枷耄庋b了多個(gè)類。下面詳細(xì)介紹使用的類。

(1)定義被演示的數(shù)據(jù)結(jié)構(gòu)所需的對(duì)象類

由于C#指針的使用不同于C語言,所以不能直接定義結(jié)構(gòu)類似的節(jié)點(diǎn),取而代之的是自定義的Lin-kNode類,重要成員如下:

(2)自定義子線程類

由于系統(tǒng)提供的Thread類成員函數(shù)有缺陷,在使用不恰當(dāng)?shù)臅r(shí)候會(huì)產(chǎn)生異常,所以自定義子線程類List_Thread再次封裝了系統(tǒng)的Thread類,用于控制線程的開啟、停止、掛起、恢復(fù),提高了算法的健壯性,重要成員如下:

(3)定義動(dòng)態(tài)演示子模塊界面類

Model_List_Control子模塊是該系統(tǒng)的重要組成部分。算法演示過程中的元素本質(zhì)是屬性被修改的Label標(biāo)簽類型,預(yù)先定義了10個(gè)標(biāo)簽代表這些數(shù)據(jù)結(jié)構(gòu)元素,這限制了用戶最大可以控制的線性長度為10。添加用于開始、暫停、停止、重置按鈕,用于調(diào)用自定義子線程的函數(shù)相應(yīng),只有在恰當(dāng)?shù)臅r(shí)機(jī)(例如線程只有被開啟,才有可能被停止、掛起或者關(guān)閉)才會(huì)執(zhí)行,這是多線程編寫中比較麻煩和復(fù)雜的部分,需要嚴(yán)密的思考各種可能出現(xiàn)的情況,才能避免因?yàn)槲醇皶r(shí)釋放線程資源或者多次釋放導(dǎo)致的進(jìn)程異常。重要成員如下:

從操作系統(tǒng)吞吐量和運(yùn)行效率角度考慮,多線程無疑比傳統(tǒng)的單線程編程模式有很大的優(yōu)勢(shì)。傳統(tǒng)的單線程編程模式,處理機(jī)調(diào)度的對(duì)象是進(jìn)程,當(dāng)進(jìn)程執(zhí)行在某個(gè)函數(shù)內(nèi)部時(shí),如果希望執(zhí)行同進(jìn)程的其他函數(shù)是無法實(shí)現(xiàn)的。上文提到自定義子線程類List_Thread類中的ThreadProc函數(shù)是線程的回調(diào)函數(shù),這是最核心的函數(shù),一旦線程開啟就意味著函數(shù)的執(zhí)行,函數(shù)執(zhí)行完畢也就代表線程的結(jié)束。所以在函數(shù)內(nèi)部調(diào)用了阻塞函數(shù)ShowDialog,保證按條件執(zhí)行完畢后線程才能結(jié)束,自定義子線程類部分源代碼如下:

[1]羅福強(qiáng),楊劍,張敏輝.C#程序設(shè)計(jì)經(jīng)典教程[M].北京:清華大學(xué)出版社,2012.

[2]嚴(yán)蔚敏.數(shù)據(jù)結(jié)構(gòu)(C語言版).北京:清華大學(xué)出版社,2005.

[3]Daniel Solis.C#圖解教程:人們郵電出版社,2008.

Single Linked List;Dynamic Demonstration;C#;Multi-thread

Design and Implementation of Dynamic Demo System of Single Linked List

XIE Jia,XU Yong,LIANG Hou-jun
(Department of Computer Science&Technology,Anhui University of Finance&Economics,Bengbu 233030)

1007-1423(2015)28-0061-05

10.3969/j.issn.1007-1423.2015.28.015

徐勇(1978-),男,博士,教授,碩士生導(dǎo)師,研究方向?yàn)樯鐣?huì)計(jì)算、信息安全、數(shù)據(jù)挖掘

梁后軍(1979-),男,博士,副教授,研究方向?yàn)橛?jì)算機(jī)網(wǎng)絡(luò)

2015-08-04

2015-09-26

介紹了在.NET平臺(tái)下,使用C#語言開發(fā)關(guān)于單鏈表算法的動(dòng)態(tài)演示系統(tǒng),算法包括單鏈表的插入與刪除。核心部分使用了多線程技術(shù)。

單鏈表;動(dòng)態(tài)演示;C#;多線程

安徽財(cái)經(jīng)大學(xué)教研項(xiàng)目(No.acjyzd201433)、國家社科基金規(guī)劃項(xiàng)目(No.15BTQ043)、教育部人文社會(huì)科學(xué)研究基金面上項(xiàng)目(No.12YJA630136)、安徽省自然科學(xué)基金面上項(xiàng)目(No.1408085MF127)、安徽省高校省級(jí)優(yōu)秀青年人才基金重點(diǎn)項(xiàng)目(No.2013SQRL031ZD)、安徽財(cái)經(jīng)大學(xué)學(xué)科特區(qū)“企業(yè)信息管理與數(shù)據(jù)挖掘”建設(shè)項(xiàng)目資助

謝嘉(1994-),本科生

Introduces the dynamic demonstration system of single linked list algorithm based on.NET platform,including insertion and deletion of single linked list.The core technology of the system is multi-thread technology.

猜你喜歡
系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機(jī)系統(tǒng)
ZC系列無人機(jī)遙感系統(tǒng)
基于PowerPC+FPGA顯示系統(tǒng)
基于UG的發(fā)射箱自動(dòng)化虛擬裝配系統(tǒng)開發(fā)
半沸制皂系統(tǒng)(下)
FAO系統(tǒng)特有功能分析及互聯(lián)互通探討
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統(tǒng) 德行天下
PLC在多段調(diào)速系統(tǒng)中的應(yīng)用
主站蜘蛛池模板: 性欧美精品xxxx| 国产精品第一区| 狠狠色综合久久狠狠色综合| 国产成人无码综合亚洲日韩不卡| 伊人久久大香线蕉综合影视| 亚洲视频无码| 亚洲综合激情另类专区| 色一情一乱一伦一区二区三区小说| 亚洲综合一区国产精品| 欧美中出一区二区| 强奷白丝美女在线观看| 亚洲欧美成aⅴ人在线观看| 亚洲AV无码不卡无码 | 青青国产视频| 午夜视频免费试看| 国产成人精彩在线视频50| 永久免费无码成人网站| 国产视频欧美| 成人精品视频一区二区在线| 粗大猛烈进出高潮视频无码| 国产成人无码AV在线播放动漫| 日韩无码视频播放| 亚洲综合久久成人AV| 日本少妇又色又爽又高潮| 日韩人妻无码制服丝袜视频| 亚洲va视频| 亚洲无码91视频| 天堂亚洲网| 一区二区三区四区在线| 99精品免费在线| 中文字幕永久在线观看| 天堂亚洲网| 亚洲欧美自拍中文| 啪啪免费视频一区二区| 免费黄色国产视频| 国产精品视频第一专区| 国产精品亚洲一区二区在线观看| 亚洲男人的天堂在线观看| 日本三级黄在线观看| 国产一级毛片yw| 久久一色本道亚洲| 亚洲成综合人影院在院播放| 欧美性爱精品一区二区三区 | 蝴蝶伊人久久中文娱乐网| 久久精品丝袜| 国产成人无码Av在线播放无广告| 欧美成人综合视频| 久久久久久久久亚洲精品| 国产精品林美惠子在线观看| 亚洲第一页在线观看| 亚洲码一区二区三区| 综合色亚洲| 亚洲天堂网在线播放| 亚洲国产黄色| 中文字幕日韩欧美| 无码免费视频| 就去色综合| 永久成人无码激情视频免费| 精品久久久久无码| 成人在线综合| 精品无码日韩国产不卡av| 欧美福利在线| 国产精品无码影视久久久久久久| 日韩人妻少妇一区二区| 欧美一级视频免费| 无码AV日韩一二三区| 亚洲天堂免费| 精品久久高清| 国产一区二区三区日韩精品| 免费女人18毛片a级毛片视频| 午夜综合网| 色综合久久88| 青青草国产在线视频| 亚洲天堂777| 无码AV高清毛片中国一级毛片| 色婷婷亚洲综合五月| 国产资源站| 成人免费午间影院在线观看| 亚洲人成网站18禁动漫无码| 国产成人精品午夜视频'| 99在线视频网站| 天堂在线www网亚洲|