freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

通訊錄管理系統(tǒng)_數據結構課程設計-資料下載頁

2025-08-20 12:27本頁面

【導讀】數據結構旨在使讀者學會分析研究數據對象的特性,學會數據的組織方法,題轉化為計算機內部的表示和處理。解決實際問題的能力。實現通訊錄的建立和輸出、通訊者的插入、刪除和查詢等幾種操作功能。*:使用數字0~5來選擇菜單項,其他輸入無效,并給出錯誤提示。運行,并且要考慮到未建立通訊錄鏈表的情況下其他功能無法實現的情況。為了達到選擇各功能,采用switch判定選擇項并跳轉入相應功能函數。實現分別用了不同函數,并且有用到函數的嵌套以減少代碼的重復。實現循環(huán)運行的功能時定義一個變量j=1,在選擇退出后再將j賦值為0,使尾指針指向新結點;提示是否繼續(xù)建表,讀入一個結束的標志;尾結點的指針域置空置NULL。序通訊表相應位置,以保持通訊錄的有序性。插入的基本思想是:

  

【正文】 。 if(b!=NULL) printf(%c,bdata)。 rear++。 23 Qu[rear]=b。 while (rear!=front) { front=(front+1)%MaxSize。 b=Qu[front]。 if(blchild!=NULL) {printf(%c,blchilddata)。 rear=(rear+1)%MaxSize。 Qu[rear]=blchild。 } if(brchild!=NULL) { printf (%c,brchilddata)。 rear=(rear+1)%MaxSize。 Qu[rear]=brchild。 } } printf(\n)。 } void PreOrder(BTNode *b)//用遞歸算法的先序遍歷函數 { if(b!=NULL) { printf (%c,bdata)。 PreOrder(blchild)。 PreOrder(brchild)。 } } void main () { BTNode * b,*p。 CreateBTNode (b,a(b(d,e),c(f,g)) )。 printf((1)輸出二叉樹 :)。DispBTNode (b)。printf(\n)。 printf((2)層次遍歷序列: )。TravLevel(b)。printf(\n)。 printf((3)先序遍歷序列: )。PreOrder(b)。printf(\n)。 } 設計總結: 二叉樹是數據結構的的基本內容。雖然程序規(guī)模不大,我依然付出了努力 , 仍免不了各種錯誤的出現。編程過程需要很大的毅力和耐心,而且要有良好的思維和扎實的專業(yè)基礎知識,所以我需要不斷的學習,發(fā)現自身不足之處改正它,逐步提高自己。 24 需求分析: 設計分析: 拓撲排序的過程中要求找到入度為 0的頂點,所以采用鄰接表來存儲有向圖,而要得到鄰接表,則先定義有向圖的鄰接矩陣結構,再把鄰接矩陣轉化成鄰接表。 在具體實現拓撲排序的函數中,當某個頂點的入度為 0(沒有前驅頂點)時,就將此頂點輸出,同時將該頂點的所有后繼頂點的入度減 1,為了避免重復檢測入度為 0的頂點,設立一個棧 St,以存放入度為 0的頂點。 源程序代碼: include include define MAXV 10 // 最大頂點個數 typedef struct { int edges[MAXV][MAXV]。 // 鄰接矩陣的邊數組 int n。 // 頂點數 }MGraph。 typedef struct ANode { int adjvex。 // 該弧的終點位置 struct ANode * nextarc。 // 指向下一條 弧的指針 }ArcNode。 typedef struct { int no。 // 頂點信息 int count。 // 頂點入度 25 ArcNode * firstarc。 // 指向第一條弧 }VNode, AdjList[MAXV]。 typedef struct { AdjList adjlist。 // 鄰接表 int n。 // 圖的頂點數 }ALGraph。 void MatTolist(MGraph g, ALGraph * amp。G) { int i, j, n=。 ArcNode * p。 G = (ALGraph *)malloc(sizeof(ALGraph))。 for (i=0。 in。 i++) Gadjlist[i].firstarc = NULL。 for (i=0。 in。 i++) for (j=n1。 j=0。 j) if ([i][j]!=0) { p=(ArcNode *)malloc(sizeof(ArcNode))。 padjvex = j。 pnextarc = Gadjlist[i].firstarc。 Gadjlist[i].firstarc = p。 } Gn=n。 } void TopSort(ALGraph * G) { int i,j,flag=0,a[MAXV]。 int St[MAXV], top = 1。 // 棧 St 的指針為 top ArcNode * p。 for (i=0。 iGn。 i++) // 入度置初值為 0 Gadjlist[i].count = 0。 for (i=0。 iGn。 i++) // 求所有頂點的入度 { p=Gadjlist[i].firstarc。 26 while (p!=NULL) { Gadjlist[padjvex].count++。 p=pnextarc。 } } for (i=0。 iGn。 i++) if (Gadjlist[i].count==0) // 入度為 0 的頂點進棧 { top++。 St[top] = i。 } while (top1) // 棧不為空時循環(huán) { i = St[top]。 top。 // 出棧 a[flag++]=i。 // 輸出頂點 p=Gadjlist[i].firstarc。 // 找第一個相鄰頂點 while (p!=NULL) { j = padjvex。 Gadjlist[j].count。 if (Gadjlist[j].count==0) { top++。 St[top] = j。 // 入度為 0 的相鄰頂點進棧 } p = pnextarc。 // 找下一個相鄰頂點 } } if (flagGn) printf(該圖存在回路,不存在拓撲序列 !\n)。 else { printf(該圖的一個拓撲序列為 :)。 for(i=0。 iflag。 i++) printf(%d, a[i])。 printf(\n)。 27 } } void main() { int i, j。 MGraph g。 ALGraph * G。 G=(ALGraph *)malloc(sizeof(ALGraph))。 printf(請輸入圖的頂點數 :)。 scanf(%d, amp。)。 printf(請輸入圖的鄰接矩陣 :\n)。 for(i=0。 i。 i++) for(j=0。 j。 j++) scanf(%d, amp。[i][j])。 MatTolist(g, G)。 TopSort(G)。 } 測試用例: 對 圖 — 1 有向圖進行拓撲排序,由于圖中存在回路,則無法得到拓撲序列 圖 — 1 2 0 3 4 1 28 對圖 — 2 有向圖進行拓撲排序,得到拓撲序列 實驗總結: 通過對有向圖進行拓撲排序 讓 我了解 到 有向圖的鄰接矩陣和鄰接 表的存儲結構以及它們之間的相互轉化,學會了對有向圖的拓撲排序算法, 與棧聯系起來找到拓撲序列 , 但 是, 這種 算法只能找到一條拓撲序列, 所以該算法仍需改進。1 1 0 2 3 4
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1