① 求編程方法
1、學好C語言,你可以很好地應付任何一種編程工具。
2、一定要多上機練習,通過程式了解相關知識。幾經反復方得正果。
3、不要把學習C語言當成一種任務,更不要把它看成很難完成的任務。要充滿自信,只要是一個智力正常的人都能學好C語言。始終保持游戲的心態,多發現其中的樂趣。當感到編程趣味無窮,那你在電腦方面將前程無量。
4、如果一個程式一時無法弄清楚最後暫時放在一邊,過一段時間你可能會從其他的程式中悟出道理。
5、C語言是一個整體,各個方面是有機聯系的,要從總體上把握它,不要把它割裂成互不關聯的部件。
6、不要完全相信教材(包括本講義),所有結論最好都上機驗證。
簡單的說,編程就是為了藉助於計算機來達到某一目的或解決某個問題,而使用某種程序設計語言編寫程序代碼,並最終得到結果的過程。
計算機雖然功能十分強大。可以供你上網、打游戲、管理公司人事關系等等,但是沒有程序,它就等於是一堆廢鐵,不會理會我們對它下達的「命令」。於是,我們要馴服它,只有通過一種方式——程序,這也是我們和計算機溝通的唯一方式。
那程序到底是什麼呢?
程序也就是指令的集合,它告訴計算機如何執行特殊的任務。
打個比方說,它好比指導你烹調菜品的菜譜或指揮行駛一路到達目的地的交警(或者交通路標)。沒有這些特殊的指令,就不能執行預期的任務。計算機也一樣,當你想讓計算機為你做一件事情的時候,計算機本身並不能主動為我們工作,因此我們必須對它下達指令,而它根本不會也不可能聽懂人類自然語言對事情的描述,因此我們必須使用程序來告訴計算機做什麼事情以及如何去做?甚至對最簡單的任務也需要指令,例如如何取得擊鍵,怎樣在屏幕上放一個字母,怎樣在磁碟中保存文件等等。
這么麻煩,連這些東西編程都要考慮!怪不得人家說編程好難!你錯了,其實許多這樣的指令都是現成的,包含在處理晶元中內置於操作系統中,因此我們不必擔心它們工作,他們都是由處理器和操作系統來完成的,並不需要我們來干預這些過程。
上面講到的計算機本身不會主動的做任何事情。因此我們要通過程序的方式來讓計算機為我們「效勞」。而這個過程就是我們「編」出來的。編程可以使用某一種程序設計語言來實現,按照這種語言的語法來描述讓計算機要做的事情。
我們這里所講的語法和外語中的語法完全兩碼事,這里講的語法只是讀你的程序書寫做出一寫規定而已。
寫出程序後,再由特殊的軟體將你的程序解釋或翻譯成計算機能夠識別的「計算機語言」,然後計算機就可以「聽得懂」你的話了,並會按照你的吩咐去做事了。因此,編程實際上也就是「人給計算機出規則」這么一個過程。
隨計算機語言的種類非常的多,總的來說可以分成機器語言,匯編語言,高級語言三大類。
電腦每做的一次動作,一個步驟,都是按照已經用計算機語言編好的程序來執行,程序是計算機要執行的指令的集合,而程序全部都是用我們所掌握的語言來編寫的。所以人們要控制計算機一定要通過計算機語言向計算機發出命令。
計算機所能識別的語言只有機器語言,即由構成的代碼。但通常人們編程時,不採用機器語言,因為它非常難於記憶和識別。
目前通用的編程語言有兩種形式:匯編語言和高級語言。
匯編語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。
匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業知識,但匯編語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。
高級語言是目前絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。由於省略了很多細節,所以編程者也不需要具備太多的專業知識。
② C++演算法的書籍(適合初學的)
一般來說,清華大學出版社的計算機書是最好的,主要有
1.《C++語言基礎教程(第2版)》
出版社:清華大學出版社
作者:呂鳳翥
書中全面、系統地講述了 C++語言的基本概念、基本語法和編程方法,較詳盡地講述了 C++語言面向對象的重要特徵: 類和對象、繼承和派生類、多態性、虛函數、函數模塊和類模板等內容。本書具有豐富的例題,每章後面均備有相當數量的練習題和作業題。 全書通俗易懂,由淺入深,突出重點,偏重應用。本書不僅可作為高等學校 C++語言課程的教材,還可作為 C++語言的自學教材
2.《面向對象程序設計與C++語言(第二版)》
出版社:人民郵電出版社
作者:楊庚/王汝傳/葉曉國
本書系統地介紹了面向對象技術及C++語言的相關知識。內容包括面向對象技術的概念和特徵、C++語言基礎、類和對象、派生與繼承、虛函數與多態性、模板、運算符重載、輸入/輸出流庫、異常處理等。 本書注重基本概念,從實際應用出發,突出重點,敘述清楚,深入淺出,論述詳盡,使讀者既能深刻領會面向對象程序設計的思想,了解面向對象程序設計的特徵,又能掌握C++語言的...
3.《C++語言程序設計教程》
出版社:清華大學出版社
作者:楊進才/沈顯君/劉蓉
C++語言是目前最為流行的程序設計語言,它既支持面向過程的結構化程序設計,也支持基於對象的面向對象程序設計。本書依據ANSI C++標准,從面向過程的編程到面向對象的編程方法展開,形成一條自然流暢的主線,同時兩個部分又自成體系,以滿足不同基礎與需求的學習者。內容包括:C++編程簡介、數據類型與表達式、控制結構、函數、構造數據類型、C++程序的結構、類與對象、繼承
4.《C/C++程序設計教程》
出版社:機械工業出版社
作者:秦維佳/傘宏力/侯春光/孟艷紅
本書是《C/C++程序設計教程》的配套學習輔導用書。. 全書共分12章,內容包括C/C++語言程序設計初步,C語言的數據類型及表達式,結構化程序設計,數組、函數與指針的概念和實例,結構體與共用體,位運算與文件的概念,面向對象程序設計,類的繼承與多態,C++的I/O流。每章包括知識體系、學習要點、上機實訓、習題和參考答案。.. 本書可供初學者學習C語言,也可供...
5.《C++程序設計基礎導學》
出版社:科學出版社
作者:趙海廷/嚴運國
本書為是實踐訓練環節必不可少的輔助教材。本書按照《C++程序設計基礎》的順序組織編撰,由基本要求、內容小結、典型例題分析、習題、實驗及習題參考答案組成。本書的目的是通過典型例題剖析、習題和實驗環節來鞏固所學的理論知識,提高學生的實踐操作水平。 本書適用高職高專的理工科學生,也適合於C++語言的初學者,還可供普通高校理...
③ 學習演算法分析與設計需要那些基礎(是否需要學習離散數學和線性代數)
演算法分析與設計,目前國內本科生和碩士生的教材好像都是從國外翻譯過來的。聽起來挺復雜的樣子,如果簡單地掌握和運用還是不難的,大部分內容在數據結構中都涉及過,實際編程中也運用比較多,難的在於演算法的理論研究,如21世紀的七大難題之一的NP問題就是演算法問題(涉及邏輯可滿足性問題)。
簡單地講需要的基礎有以下幾類:
1、基礎類(相對一般本科生而言):(1)把數據結構學好了演算法就不難的,而數據結構其實就是圖論的運用,如果是非數學專業的學生可以看離散數學中的圖論部分。(2)演算法分析設計時間和空間復雜度的計算,常用的還是毛澤東的戰略思想——以空間換取時間。所以要學會簡單的數量級運算,涉及部分代數式和數論的知識。只要簡單掌握運算就可以了,不必深究。
2、提高型(研究生水平):圖論、組合數學、數理邏輯學要專門學習,可以採用數學系本科生的圖論、組合數學、數理邏輯學等專業課的教材。其中組合數學中的組合設計在一定程度上和演算法設計有異曲同工之處。
3、研究型(專業研究):這主要看自己的研究方向了,如果研究能力強的話可以在很短時間內可以把需要遇到的數學知識搞懂,沒有現成的固定模式。其中如研究NP問題,需要非常精深的邏輯學知識和數論基礎。但不管哪個研究方向,數學的縝密思維和推理能力都是必備的,這不是一朝一夕可以練就的,需要長時間的鍛煉。
以上僅個人一點點體會,僅供參考。
④ 初學者,數學建模需要准備些什麼東西
數學建模應當掌握的十類演算法
1、蒙特卡羅演算法(該演算法又稱隨機性模擬演算法,是通過計算機模擬來解決問題的算 法,同時可以通過模擬可以來檢驗自己模型的正確性,是比賽時必用的方法) 2、數據擬合、參數估計、插值等數據處理演算法(比賽中通常會遇到大量的數據需要 處理,而處理數據的關鍵就在於這些演算法,通常使用Matlab作為工具) 3、線性規劃、整數規劃、多元規劃、二次規劃等規劃類問題(建模競賽大多數問題 屬於最優化問題,很多時候這些問題可以用數學規劃演算法來描述,通常使用Lindo、 Lingo軟體實現) 4、圖論演算法(這類演算法可以分為很多種,包括最短路、網路流、二分圖等演算法,涉 及到圖論的問題可以用這些方法解決,需要認真准備) 5、動態規劃、回溯搜索、分治演算法、分支定界等計算機演算法(這些演算法是演算法設計 中比較常用的方法,很多場合可以用到競賽中) 6、最優化理論的三大非經典演算法:模擬退火法、神經網路、遺傳演算法(這些問題是 用來解決一些較困難的最優化問題的演算法,對於有些問題非常有幫助,但是演算法的實 現比較困難,需慎重使用) 7、網格演算法和窮舉法(網格演算法和窮舉法都是暴力搜索最優點的演算法,在很多競賽 題中有應用,當重點討論模型本身而輕視演算法的時候,可以使用這種暴力方案,最好 使用一些高級語言作為編程工具) 8、一些連續離散化方法(很多問題都是實際來的,數據可以是連續的,而計算機只 認的是離散的數據,因此將其離散化後進行差分代替微分、求和代替積分等思想是非 常重要的) 9、數值分析演算法(如果在比賽中採用高級語言進行編程的話,那一些數值分析中常 用的演算法比如方程組求解、矩陣運算、函數積分等演算法就需要額外編寫庫函數進行調 用) 10、圖象處理演算法(賽題中有一類問題與圖形有關,即使與圖形無關,論文中也應該 要不乏圖片的,這些圖形如何展示以及如何處理就是需要解決的問題,通常使用Matlab 進行處理)
數學建模資料
競賽參考書
l、中國大學生數學建模競賽,李大潛主編,高等教育出版社(1998). 2、大學生數學建模競賽輔導教材,(一)(二)(三),葉其孝主編,湖南教育 出版社(1993,1997,1998). 3、數學建模教育與國際數學建模競賽 《工科數學》專輯,葉其孝主編, 《工科數學》雜志社,1994).
國內教材、叢書
1、數學模型,姜啟源編,高等教育出版社(1987年第一版,1993年第二版,2003年第三版;第一版在 1992年國家教委舉辦的第二屆全國優秀教材評選中獲"全國優秀教材獎"). 2、數學模型與計算機模擬,江裕釗、辛培情編,電子科技大學出版社,(1989). 3、數學模型選談(走向數學從書),華羅庚,王元著,王克譯,湖南教育出版社;(1991). 4、數學建模--方法與範例,壽紀麟等編,西安交通大學出版社(1993). 5、數學模型,濮定國、 田蔚文主編,東南大學出版社(1994). 6..數學模型,朱思銘、李尚廉編,中山大學出版社,(1995) 7、數學模型,陳義華編著,重慶大學出版社,(1995) 8、數學模型建模分析,蔡常豐編著,科學出版社,(1995). 9、數學建模競賽教程,李尚志主編,江蘇教育出版社,(1996). 10、數學建模入門,徐全智、楊晉浩編,成都電子科大出版社,(1996). 11、數學建模,沈繼紅、施久玉、高振濱、張曉威編,哈爾濱工程大學出版社,(1996). 12、數學模型基礎,王樹禾編著,中國科學技術大學出版社,(1996). 13、數學模型方法,齊歡編著,華中理工大學出版社,(1996). 14、數學建模與實驗,南京地區工科院校數學建模與工業數學討論班編,河海大學 出版社,(1996). 15、數學模型與數學建模,劉來福、曾文藝編,北京師范大學出版杜(1997). 16. 數學建模,袁震東、洪淵、林武忠、蔣魯敏編,華東師范大學出版社. 17、數學模型,譚永基,俞文吡編,復旦大學出版社,(1997). 18、數學模型實用教程,費培之、程中瑗層主編,四川大學出版社,(1998). 19、數學建模優秀案例選編(工科數學基地建設叢書),汪國強主編,華南理工大學出版社,(1998). 20、經濟數學模型(第二版)(工科數學基地建設叢書),洪毅、賀德化、昌志華 編著,華南理工大學出版社,(1999). 21、數學模型講義,雷功炎編,北京大學出版社(1999). 22、數學建模精品案例,朱道元編著,東南大學出版社,(1999), 23、問題解決的數學模型方法,劉來福,曾文藝編著、北京師范大學出版社,(1999). 24、數學建模的理論與實踐,吳翔,吳孟達,成禮智編著,國防科技大學出版社, (1999). 25、數學建模案例分析,白其嶺主編,海洋出版社,(2000年,北京). 26、數學實驗(高等院校選用教材系列),謝雲蓀、張志讓主編,科學出版社,(2000). 27、數學實驗,傅鵬、龔肋、劉瓊蓀,何中市編,科學出版社,(2000). 28、數學建模與數學實驗,趙靜、但琦編,高等教育出版社,(2000).
國外參考書(中譯本)
1、數學模型引論, E.A。Bender著,朱堯辰、徐偉宣譯,科學普及出版社(1982). 2、數學模型,[門]近藤次郎著,官榮章等譯,機械工業出版社,(1985). 3、微分方程模型,(應用數學模型叢書第1卷),[美]W.F.Lucas主編,朱煜民等 譯,國防科技大學出版社,(1988). 4、政治及有關模型,(應用數學模型叢書第2卷),[美W.F.Lucas主編,王國秋 等譯,國防科技大學出版社,(1996). 5、離散與系統模型,(應用數學模型叢書第3卷),[美w.F.Lucas主編,成禮智 等譯,國防科技大學出版社,(1996). 6、生命科學模型,(應用數學模型叢書第4卷),[美1W.F.Lucas主編,翟曉燕等 譯,國防科技大學出版社,(1996). 7、模型數學--連續動力系統和離散動力系統,[英1H.B.Grif6ths和A.01dknow 著,蕭禮、張志軍編譯,科學出版社,(1996). 8、數學建模--來自英國四個行業中的案例研究,(應用數學譯叢第4號), 英]D.Burglles等著,葉其孝、吳慶寶譯,世界圖書出版公司,(1997)
專業性參考書
(這方面書籍很多,僅列幾本供參考) : 1、水環境數學模型,[德]W.KinZE1bach著,楊汝均、劉兆昌等編纂,中國建築工 業出版社,(1987). 2、科技工程中的數學模型,堪安琦編著,鐵道出版社(1988) 3、生物醫學數學模型,青義學編著,湖南科學技術出版杜(1990). 4、農作物害蟲管理數學模型與應用,蒲蟄龍主編,廣東科技出版社(1990). 5、系統科學中數學模型,歐陽亮編著, E山東大學出版社,(1995). 6、種群生態學的數學建模與研究,馬知恩著,安徽教育出版社,(1996) 7、建模、變換、優化--結構綜合方法新進展,隋允康著,大連理工大學出版社, (1986) 8、遺傳模型分析方法,朱軍著,中國農業出版社(1997). (中山大學數學系王壽松編輯,2001年4月)
過程
模型准備
了解問題的實際背景,明確其實際意義,掌握對象的各種信息。用數學語言來描述問題。
模型假設
根據實際對象的特徵和建模的目的,對問題進行必要的簡化,並用精確的語言提出一些恰當的假設。
模型建立
在假設的基礎上,利用適當的數學工具來刻劃各變數之間的數學關系,建立相應的數學結構(盡量用簡單的數學工具)。
模型求解
利用獲取的數據資料,對模型的所有參數做出計算(或近似計算)。
模型分析
對所得的結果進行數學上的分析。
模型檢驗
將模型分析結果與實際情形進行比較,以此來驗證模型的准確性、合理性和適用性。如果模型與實際較吻合,則要對計算結果給出其實際含義,並進行解釋。如果模型與實際吻合較差,則應該修改假設,再次重復建模過程。
模型應用
應用方式因問題的性質和建模的目的而異。
1、努力學習數學知識,完善自己的知識體系,尤其是與數學相關的知識體系,比如高等數學、工程數學和應用數學的相關知識;
2、擴充自己的知識面,你可以看到很多賽題都是很現實的社會熱點問題,相關的背景知識是非常必要的;
3、多看一些案例分析的教程,在學習案例分析時的注意點是:如何考慮現實問題中的各個因素,綜合運用所學知識,建立適當的模型;如何進行模型的優化;如何求解模型;如何解釋模型的解。
還要逐步去理解數學建模中最難的三個問題,1、如何用學到的數學思想來表述所面對的問題,所謂的建模。2、應用學到的數學知識解剛剛建立的數學模型,並進行優化。3、將剛剛得到的數學上的解解釋為現實問題中的現象或者是方法。這三個過程體現了一個「現實——>數學——>現實」的一個過程。這其實就是最難的地方。這需要你首先了解面臨的實際問題,然後從現實中轉入數學,再從數學中跳出來回到現實。
4、說到matlab,我建議你借一本matlab手冊做參考書就行了!畢竟matlab只是實現你數學模型的基礎,這不是說matlab不重要,其實matlab也很重要!
祝你快樂!
⑤ C語言演算法設計主要需要掌握哪些
你如果只問C語言的話,它與其他語言最大的不同就是指針了,很多針對C語言的演算法都會用到它,每種語言雖然大體相同但都有獨特之處的。我們老師常說:
不懂指針的人,就等於不會C/C++
不懂委託、引用的人,就等於不會C#
除此之外就是演算法設計的共同基礎了,像樓上所說的,
你需要熟悉各種數據結構的特性,才能在設計你的演算法時用最適合的方法
你需要熟悉各種變數的結構,C語言是可以手動管理內存的,靈活掌握物理地址與邏輯地址對C語言演算法設計很有幫助
你需要熟悉各種循環控制結構,這才是程序的真諦,讓計算機代替人完成重復性的工作,而演算法就是教機器該如何這樣做的命令集
⑥ 怎樣用DIJKSTRA演算法設計最短路徑
以下................
輸入時,將s,t,x,y,z五個點按照1,2,3,4,5起別名,輸入格式按照下圖例所示
當提示Please enter the vertex where Dijkstra algorithm starts:時輸入演算法的起始點
比如計算結果v1v4v2表示從點1到點2經過1,4,2為最短路徑
Dijkstra演算法的完整實現版本,演算法的源代碼
/* Dijkstra.c
Copyright (c) 2002, 2006 by ctu_85
All Rights Reserved.
*/
#include "stdio.h"
#include "malloc.h"
#define maxium 32767
#define maxver 9 /*defines the max number of vertexs which the programm can handle*/
#define OK 1
struct Point
{
char vertex[3];
struct Link *work;
struct Point *next;
};
struct Link
{
char vertex[3];
int value;
struct Link *next;
};
struct Table /*the workbannch of the algorithm*/
{
int cost;
int Known;
char vertex[3];
char path[3];
struct Table *next;
};
int Dijkstra(struct Point *,struct Table *);
int PrintTable(int,struct Table *);
int PrintPath(int,struct Table *,struct Table *);
struct Table * CreateTable(int,int);
struct Point * FindSmallest(struct Table *,struct Point *);/*Find the vertex which has the smallest value reside in the table*/
int main()
{
int i,j,num,temp,val;
char c;
struct Point *poinpre,*poinhead,*poin;
struct Link *linpre,*linhead,*lin;
struct Table *tabhead;
poinpre=poinhead=poin=(struct Point *)malloc(sizeof(struct Point));
poin->next=NULL;
poin->work=NULL;
restart:
printf("Notice:if you wanna to input a vertex,you must use the format of number!\n");
printf("Please input the number of points:\n");
scanf("%d",&num);
if(num>maxver||num<1||num%1!=0)
{
printf("\nNumber of points exception!");
goto restart;
}
for(i=0;i<num;i++)
{
printf("Please input the points next to point %d,end with 0:\n",i+1);
poin=(struct Point *)malloc(sizeof(struct Point));
poinpre->next=poin;
poin->vertex[0]='v';
poin->vertex[1]='0'+i+1;
poin->vertex[2]='\0';
linpre=lin=poin->work;
linpre->next=NULL;
for(j=0;j<num-1;j++)
{
printf("The number of the %d th vertex linked to vertex %d:",j+1,i+1);
scanf("%d",&temp);
if(temp==0)
{
lin->next=NULL;
break;
}
else
{
lin=(struct Link *)malloc(sizeof(struct Link));
linpre->next=lin;
lin->vertex[0]='v';
lin->vertex[1]='0'+temp;
lin->vertex[2]='\0';
printf("Please input the value betwixt %d th point towards %d th point:",i+1,temp);
scanf("%d",&val);
lin->value=val;
linpre=linpre->next;
lin->next=NULL;
}
}
poinpre=poinpre->next;
poin->next=NULL;
}
printf("Please enter the vertex where Dijkstra algorithm starts:\n");
scanf("%d",&temp);
tabhead=CreateTable(temp,num);
Dijkstra(poinhead,tabhead);
PrintTable(temp,tabhead);
return OK;
}
struct Table * CreateTable(int vertex,int total)
{
struct Table *head,*pre,*p;
int i;
head=pre=p=(struct Table *)malloc(sizeof(struct Table));
p->next=NULL;
for(i=0;i<total;i++)
{
p=(struct Table *)malloc(sizeof(struct Table));
pre->next=p;
if(i+1==vertex)
{
p->vertex[0]='v';
p->vertex[1]='0'+i+1;
p->vertex[2]='\0';
p->cost=0;
p->Known=0;
}
else
{
p->vertex[0]='v';
p->vertex[1]='0'+i+1;
p->vertex[2]='\0';
p->cost=maxium;
p->Known=0;
}
p->next=NULL;
pre=pre->next;
}
return head;
}
int Dijkstra(struct Point *p1,struct Table *p2) /* Core of the programm*/
{
int costs;
char temp;
struct Point *poinhead=p1,*now;
struct Link *linna;
struct Table *tabhead=p2,*searc,*result;
while(1)
{
now=FindSmallest(tabhead,poinhead);
if(now==NULL)
break;
result=p2;
result=result->next;
while(result!=NULL)
{
if(result->vertex[1]==now->vertex[1])
break;
else
result=result->next;
}
linna=now->work->next;
while(linna!=NULL) /* update all the vertexs linked to the signed vertex*/
{
temp=linna->vertex[1];
searc=tabhead->next;
while(searc!=NULL)
{
if(searc->vertex[1]==temp)/*find the vertex linked to the signed vertex in the table and update*/
{
if((result->cost+linna->value)<searc->cost)
{
searc->cost=result->cost+linna->value;/*set the new value*/
searc->path[0]='v';
searc->path[1]=now->vertex[1];
searc->path[2]='\0';
}
break;
}
else
searc=searc->next;
}
linna=linna->next;
}
}
return 1;
}
struct Point * FindSmallest(struct Table *head,struct Point *poinhead)
{
struct Point *result;
struct Table *temp;
int min=maxium,status=0;
head=head->next;
poinhead=poinhead->next;
while(head!=NULL)
{
if(!head->Known&&head->cost<min)
{
min=head->cost;
result=poinhead;
temp=head;
status=1;
}
head=head->next;
poinhead=poinhead->next;
}
if(status)
{
temp->Known=1;
return result;
}
else
return NULL;
}
int PrintTable(int start,struct Table *head)
{
struct Table *begin=head;
head=head->next;
while(head!=NULL)
{
if((head->vertex[1]-'0')!=start)
PrintPath(start,head,begin);
head=head->next;
}
return OK;
}
int PrintPath(int start,struct Table *head,struct Table *begin)
{
struct Table *temp=begin->next,*p,*t;
p=head;
t=begin;
if((p->vertex[1]-'0')!=start&&p!=NULL)
{
while(temp->vertex[1]!=p->path[1]&&temp!=NULL)
temp=temp->next;
PrintPath(start,temp,t);
printf("%s",p->vertex);
}
else
if(p!=NULL)
printf("\n%s",p->vertex);
return OK;
}