版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第31頁共31頁GuangxiUniversityofScienceandTechnology課程設(shè)計報告課程名稱:數(shù)據(jù)結(jié)構(gòu)與編程綜合實訓(xùn)課題名稱:通訊錄管理系統(tǒng)的設(shè)計與實現(xiàn)姓名:熊信萌學(xué)號:201400402003院系:計算機(jī)科學(xué)與通信工程學(xué)院專業(yè)班級:通信141班指導(dǎo)教師:周堅和完成日期:2015-12-18
目錄第一部分課程設(shè)計報告…………3第1章課程設(shè)計目的……………………3第2章課程設(shè)計內(nèi)容和要求……………32.1問題描述………32.2設(shè)計要求…………4第3章課程設(shè)計總體方案及分析………53.1問題分析………43.2概要設(shè)計…………53.3詳細(xì)設(shè)計…………63.4調(diào)試分析………183.5測試結(jié)果………183.6參考文獻(xiàn)………22第二部分課程設(shè)計總結(jié)………23附錄(源代碼)…………………24第一部分課程設(shè)計報告第1章課程設(shè)計目的課程設(shè)計是實踐教學(xué)中的重要環(huán)節(jié),它以某一門課程為基礎(chǔ),涉及和課程相關(guān)的各方面知識,是一門獨立于課程外的特殊課程。課程設(shè)計就是讓所有同學(xué)對課程更全面的應(yīng)用。本次實驗項目“通訊錄管理”就是針對數(shù)據(jù)結(jié)構(gòu)的一門應(yīng)用較為廣泛的系統(tǒng)管理方法。1.實現(xiàn)意義本次實驗應(yīng)用性能很好,結(jié)構(gòu)清楚,能隨時添加、刪除、查找、修改、輸出聯(lián)系人;并且可以用姓名、編號兩種方式;而且其中增加了排序功能,使得插入之后排序為接下來的操作提供便利,操作更精確,以人性化的方式展現(xiàn)出來,效果十分突出。2.系統(tǒng)分析編程完成通訊錄的一般性管理工作如通訊錄中記錄的增加、修改、查找、刪除、輸出、計算男女人數(shù)等功能。每個記錄包含編號、姓名、性別、電話號碼個人基本信息。用《數(shù)據(jù)結(jié)構(gòu)》中的鏈表做數(shù)據(jù)結(jié)構(gòu)結(jié)合c語言基本知識編寫一個通訊錄管理系統(tǒng)。本程序相對簡單,使用方便,幾乎不用特殊的命令,只需按提示輸入即可。對于建立通訊錄管理系統(tǒng),則需了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計方法,尤其在算法方面,鏈表及結(jié)點的聯(lián)系,提高綜合運(yùn)用所學(xué)的理論知識和方法獨立分析和解決問題的能力。第2章課程設(shè)計內(nèi)容和要求2.1問題描述:設(shè)計并實現(xiàn)一個通訊錄信息系統(tǒng)建立通訊錄信息,信息包含編號、姓名、性別、電話;能夠提供添加、刪除和修改通訊錄信息的功能;能夠提供查詢的功能;能夠提供性別統(tǒng)計的功能;能夠輸出通訊錄信息。2.2設(shè)計要求:要求設(shè)計程序輸出如下:用鏈表實現(xiàn)學(xué)生信息管理系統(tǒng),完成鏈表建立(至少包括50個節(jié)點),以及鏈表中信息(節(jié)點)的插入、查找、刪除、修改、輸出等操作,具體的模塊要求如下(用“文本文件”按照自定義格式存儲數(shù)據(jù)記錄集)。第一個模塊——主函數(shù)main()實現(xiàn)功能:根據(jù)菜單的選項調(diào)用各函數(shù),并完成相應(yīng)的功能。第二個模塊——Menu()實現(xiàn)功能:顯示提示菜單。第三個模塊——Quit()實現(xiàn)功能:退出菜單。第四個模塊——Create()實現(xiàn)功能:創(chuàng)建新的學(xué)生信息記錄。第五個模塊——Add()實現(xiàn)功能:增加新的學(xué)生信息記錄,并返回菜單。第六個模塊——Find()實現(xiàn)功能:按要求查詢相關(guān)的信息,如果找到則顯示該學(xué)生信息,如果未找到則提示文件中沒有該信息,并返回菜單。第七個模塊——Alter()實現(xiàn)功能:修改某條學(xué)生記錄的信息,如果未找到要修改的學(xué)生記錄,則提示系統(tǒng)中無此學(xué)生記錄,并返回菜單。第八個模塊——Delete()實現(xiàn)功能:刪除某條學(xué)生記錄,如果未找到要刪除的學(xué)生記錄,則提示該學(xué)生記錄集中沒有,并返回菜單。第九個模塊——List()實現(xiàn)功能:能夠分頁顯示數(shù)據(jù)記錄集中的所有學(xué)生的記錄。第十個模塊——Searchbysex()實現(xiàn)功能:統(tǒng)計通訊錄中男性人數(shù)及女性人數(shù)第3章課程設(shè)計總體方案及分析3.1問題分析:該程序是要將幾個不同功能的函數(shù)用鏈表串聯(lián)起來,來組成一個通訊錄信息系統(tǒng)。因為鏈表能讓數(shù)據(jù)既有獨立性又便于數(shù)據(jù)之間的相互聯(lián)系,也便于數(shù)據(jù)的添加和刪除。用模塊化程序設(shè)計的理念,對幾個不同功能的函數(shù),分塊處理,這樣有利于后期的調(diào)試及今后對功能的完善。菜單中的每一個選項對應(yīng)著一個子程序,這個系統(tǒng)就由這些子程序建立起來。下面是這個程序的設(shè)計流程圖:圖3.1設(shè)計流程圖3.2概要設(shè)計1.①構(gòu)建一個結(jié)構(gòu)體用于建立一個鏈表。②鏈表里面包括了要儲存學(xué)生的信息的代號。③屏幕上顯示出菜單。2.本程序包含8個函數(shù):(1)主函數(shù)main()(2)創(chuàng)建函數(shù)LinkListCreateList()(3)增加通訊錄人員函數(shù)voidAddNode(LinkListhead,ListNode*p)(4)刪除某個學(xué)生信息的函數(shù)voidDeleteNode(LinkListhead)(5)查詢通訊錄人員的函數(shù)ListNode*ListFind(LinkListhead)(6)修改通訊錄人員的函數(shù)voidAlterNode(LinkListhead)(7)性別統(tǒng)計的函數(shù)voidSeachbysex(LinkListhead)(8)通訊錄輸出函數(shù)voidPrintList(LinkListhead)(9)退出系統(tǒng)函數(shù)3.3詳細(xì)設(shè)計實現(xiàn)概要設(shè)計中定義的所有數(shù)據(jù)類型及操作的偽代碼算法節(jié)點類型和指針類型結(jié)構(gòu)體里面的數(shù)據(jù)類型:typedefstruct//通訊錄數(shù)據(jù)類型{charnumber[3];//編號charname[9];//姓名charsex[10];//性別chartelephone[11];//電話}DataType 主函數(shù)voidmain(){ intk,j=1; ListNode*l; while(j) { printf("\t\t\t熊信萌通訊錄課程設(shè)計\n"); printf("\t\t\t********************************"); printf("\n\t\t\t1.通訊錄的建立"); printf("\n\t\t\t2.通訊者的插入"); printf("\n\t\t\t3.通訊者的查詢"); printf("\n\t\t\t4.通訊者的刪除");printf("\n\t\t\t5.通訊者的修改"); printf("\n\t\t\t6.通訊錄的輸出"); printf("\n\t\t\t7.男生女生的人數(shù)"); printf("\n\t\t\t0.退出通訊錄管理系統(tǒng)"); printf("\n\t\t\t******************************"); printf("\n請選擇菜單號(0--6):"); scanf("%d",&k); getchar(); switch(k) { case1: { printf("\n1.通訊錄的建立\n"); head=CreateList(); flag1=1; break; } case2: { if(flag1!=1) { printf("請先建立表!"); getchar(); } else { printf("\n2.通訊者信息的插入\n"); printf("\n編號姓名性別電話\n"); printf("\n"); p=(ListNode*)malloc(sizeof(ListNode));/*申請新結(jié)點*/ printf("輸入編號:\n"); scanf("%s",p->data.number); printf("輸入姓名:\n"); scanf("%s",p->); printf("輸入性別:\n"); scanf("%s",p->data.sex); printf("輸入電話:\n"); scanf("%s",p->data.telephone); AddNode(head,p); printf("排序:\n");OrderList(l);//調(diào)用通訊錄排序函數(shù)此處放在插入模塊下面} break; } case3: { if(flag1!=1) { printf("請先建立表!"); getchar(); system("cls"); } else { printf("\n3.通訊錄信息的查詢\n"); p=ListFind(head); if(p!=NULL) { printf("編號姓名性別聯(lián)系電話\n"); printf("\n"); printf("編號:%s\n姓名:%s\n性別:%s\n聯(lián)系電話:%s\n", p->data.number,p->,p->data.sex,p->data.telephone); printf("\n"); } elseprintf("沒有查到要查詢的通訊者!\n"); break; } case4: { if(flag1!=1) { printf("請先建立表!"); getchar(); } else { printf("\n4.通訊錄信息的刪除\n"); DeleteNode(head);/*刪除結(jié)點*/ } break; } case5: { if(flag1!=1) { printf("請先建立表!"); getchar(); system("cls"); } else { printf("\n5.通訊錄信息的修改\n"); AlterNode(head); } break; } case6: { if(flag1!=1) { printf("請先建立表!"); getchar(); } else { printf("\n6.通訊錄鏈表的輸出\n"); PrintList(head); } break; } case7: { if(flag1!=1) { printf("請先建立表!"); getchar(); system("cls"); } else { printf("\n7.通訊錄中男生女生的人數(shù)\n"); Seachbysex(head); } break; } case0: printf("是否退出(y/n)?"); k=getchar(); if(k=='y'||k=='Y') { j=0; printf("\n\n\t\t\t謝謝使用!謝謝使用!"); printf("\n按任意鍵退出"); } break; default: printf("\n輸入有錯,請重新輸入!\n"); printf("\n按任意鍵繼續(xù)..."); getchar(); break; } }}}通訊錄信息系統(tǒng)的具體操作:(1)添加:可以添加通訊錄記錄,依次輸入編號、姓名、性別、電話號碼后,會提示是否繼續(xù)添加。LinkListCreateList()//尾插法建立帶頭結(jié)點的通訊錄鏈表算法{ LinkListhead=(ListNode*)malloc(sizeof(ListNode));//申請頭結(jié)點 ListNode*p,*rear; charflag='y'; //結(jié)束標(biāo)志置y rear=head;//尾指針初始指向頭結(jié)點 while(flag=='y') { p=(ListNode*)malloc(sizeof(ListNode));//申新結(jié)點 printf("編號姓名性別電話\n"); printf("\n"); printf("輸入的編號:\n"); scanf("%s",p->data.number); printf("輸入的姓名:\n"); scanf("%s",p->); printf("輸入性別:\n"); scanf("%s",p->data.sex); printf("輸入電話:\n"); scanf("%s",p->data.telephone); rear->next=p;//新結(jié)點連接到尾結(jié)點之后 rear=p;//尾指針指向新結(jié)點 printf("繼續(xù)建表?(y/n):"); scanf("%s",&flag); } rear->next=NULL;//終端結(jié)點指針置空 returnhead;//返回鏈表頭指針}開始開始輸入y或n用if判斷輸入了y還是nyn輸入要輸入的資料將數(shù)據(jù)保存到指定的文件里結(jié)束圖3.2添加通訊錄記錄流程(2)增加通訊錄人員函數(shù)voidAddNode(LinkListhead,ListNode*p)//在通訊錄鏈表head中插入結(jié)點{ListNode*p1,*p2;p1=head;p2=p1->next;while(p2!=NULL&&strcmp(p2->data.number,p->data.number)<0){p1=p2;//p1指向剛訪問過的結(jié)點p2=p2->next;//p2指向表的下一個結(jié)點}p1->next=p;//插入p所指向的結(jié)點p->next=p2;//連接表中剩余的結(jié)點}圖3.3增加通訊錄記錄流程圖(3)刪除通訊錄信息函數(shù):輸入欲刪除的那個人的編號或名字后,會自動刪除他(她)的記錄內(nèi)容。voidDeleteNode(LinkListhead)//通訊錄鏈表上的結(jié)點刪除{ chars; ListNode*p,*q; p=ListFind(head);//調(diào)用查找函數(shù) if(p==NULL) { printf("沒有查到要刪除的通訊者!\n"); return; }printf("%s%s%s%s\n",p->data.number,p->,p->data.sex,p->data.telephone);printf("真的要刪除該結(jié)點嗎?(y/n):"); scanf("%s",&s); if(s=='y') {q=head; while(p!=NULL&&q->next!=p) q=q->next; q->next=p->next;//刪除結(jié)點 free(p);//釋放被刪除的結(jié)點空間 printf("通訊者已被刪除!\n"); return; } printf("通訊者沒有被刪除!\n");}圖3.4刪除通訊錄記錄流程圖(4)查詢通訊錄的函數(shù):用姓名、編號兩種方式查詢。ListNode*ListFind(LinkListhead)//有序通訊錄鏈表的查找{ListNode*p;charnumber[10];charname[20]; chart;printf("\n");printf("1.按編號\n");printf("2.按姓名\n");printf("\n");printf("請選擇1/2:");p=head->next;//假定通訊錄表帶有結(jié)點 scanf("%d",&t);if(t==1) { printf("請輸入所求的編號:"); scanf("%s",number); while(p&&strcmp(p->data.number,number)<0)//優(yōu)化的地方 p=p->next; if(p==NULL||strcmp(p->data.number,number)>0) p=NULL;//沒有查到要查找的通訊者 } else if(t==2) { printf("請輸入要求的姓名:"); scanf("%s",name); while(p&&strcmp(p->,name)!=0) p=p->next; }returnp;}圖3.6查詢通訊錄信息流程圖(5)修改通訊錄的函數(shù):輸入欲修改的那個人的名字后,再依次輸入編號、姓名、性別、電話號碼。voidAlterNode(LinkListhead)//通訊錄鏈表上的結(jié)點修改{ charch; ListNode*p,*q1; p=ListFind(head); if(p==NULL) { printf("沒有查到要修改的通訊者!\n"); return; } elseif(p!=NULL) { printf("真的要修改該結(jié)點嗎?(y/n)"); scanf("%s",&ch); if(ch=='y'||ch=='Y') { q1=head; printf("\n輸出新編號:"); scanf("%s",p->data.number);printf("輸出新姓名:\n"); scanf("%s",p->);printf("輸出新性別:\n"); scanf("%s",p->data.sex);printf("輸出新電話:\n"); scanf("%s",p->data.telephone); printf("修改成功!\n"); } if(ch=='n'||ch=='N') printf("無需修改\n"); }}圖3.7修改通訊錄信息(6)統(tǒng)計性別信息的函數(shù):可以統(tǒng)計男性人數(shù)和女性人數(shù)。voidSeachbysex(LinkListhead){ ListNode*p; p=head; intmen=0,women=0;while(p!=NULL) {if(strcmp(p->data.sex,"男")==0)men++;if(strcmp(p->data.sex,"女")==0) women++;p=p->next; } printf("women=%d\nmen=%d\n",women,men);}圖3.8統(tǒng)計性別信息流程圖3.菜單選擇intk,j=1; ListNode*l; while(j) { printf("\t\t\t熊信萌通訊錄課程設(shè)計\n"); printf("\t\t\t********************************"); printf("\n\t\t\t1.通訊錄的建立"); printf("\n\t\t\t2.通訊者的插入"); printf("\n\t\t\t3.通訊者的查詢"); printf("\n\t\t\t4.通訊者的刪除");printf("\n\t\t\t5.通訊者的修改"); printf("\n\t\t\t6.通訊錄的輸出"); printf("\n\t\t\t7.男生女生的人數(shù)"); printf("\n\t\t\t0.退出通訊錄管理系統(tǒng)"); printf("\n\t\t\t******************************"); printf("\n請選擇菜單號(0--6):"); scanf("%d",&k); getchar();注:具體源代碼見附錄3.4調(diào)試分析在寫統(tǒng)計男女生人數(shù)的函數(shù)時,一開始只能顯示出女生的人數(shù),而且我也沒有用到strcmp,所以一直遍歷整個鏈表不成功,后來請教了同學(xué)了之后才寫出統(tǒng)計的函數(shù)。原來開始沒有把整個鏈表傳入該函數(shù)中。3.5測試結(jié)果1.主菜單:2.建立通訊錄:3.顯示通訊錄信息:4.刪除某個通訊錄信息5.查詢通訊錄記錄:6.修改通訊錄信息7.通訊錄性別統(tǒng)計:9.退出系統(tǒng)3.6參考文獻(xiàn)①徐鳳生.《數(shù)據(jù)結(jié)構(gòu)(C語言版)》.機(jī)械工業(yè)出版社,2009年9月.②譚浩強(qiáng).《C程序設(shè)計(第三版)》.清華大學(xué)出版社.2009年1月.
第2部分課程設(shè)計總結(jié)課程設(shè)計,使我懂得了做什么事情只要專心去做,就能夠克服各種困難,達(dá)到自己的說想要的結(jié)果。當(dāng)然了,同學(xué)們和老師的幫助必不可少。從理論中得出結(jié)論。此次課程設(shè)計使我對自己的專業(yè)有了更深刻的認(rèn)識,從而提高了自己實際動手能力和獨立思考問題的能力,總而言之,此次課程設(shè)計讓我受益頗豐。⑴該通訊錄管理系統(tǒng)可以順利高效運(yùn)行,實現(xiàn)相關(guān)的要求,當(dāng)然任何程序都存在不足,我這個程序也不例外:雖然努力在程序中添加了排序模塊增加了程序的優(yōu)化和可讀性但是我可以將其中的排序模塊的調(diào)用放到輸出模塊中,最后的輸出可以更優(yōu)化些,而不是放在插入后,這樣只能根據(jù)指示一步一步去調(diào)用,相對繁瑣一點,其次在程序中增加了修改模塊,通過全局的頭結(jié)點head可以任意修改相關(guān)信息,使程序更加可讀性和靈活性。⑵同時在這次課程設(shè)計中讓我們認(rèn)識到做程序設(shè)計這項工作中我門要具備以下素質(zhì):①良好的文檔是正規(guī)研發(fā)流程中非常重要的環(huán)節(jié),缺乏文檔,一個軟件系統(tǒng)就缺乏生命力,在未來的查錯,升級以及模塊的復(fù)用時就都會遇到極大的麻煩。②此外編程是一項高要求的工作所以我們要有規(guī)范化,標(biāo)準(zhǔn)化的代碼編寫習(xí)慣通過這次編程我們深深的感受到對代碼的變量命名,代碼內(nèi)注釋格式,良好的編寫習(xí)慣,不但有助于代碼的移植和糾錯,也有助于不同人員之間的協(xié)作。③我們還要有模塊化思維能力,模塊化思維就是編程任何一個功能模塊或函數(shù)的時候,要多想一些,不要局限在完成當(dāng)前任務(wù)的簡單思路上,想想看該模塊是否可以脫離這個系統(tǒng)存在,是否可以通過簡單的修改參數(shù)的方式在其他系統(tǒng)和應(yīng)用環(huán)境下直接引用,這樣就能極大避免重復(fù)性的開發(fā)工作。在編制過程中,可能在實際應(yīng)用中有些功能不到位,對更多的功能也未能實現(xiàn)。我將不斷提高自己,尤其在相關(guān)結(jié)點知識方面多努力去學(xué)習(xí),多看書,多實踐,爭取今后在編制程序時,能夠認(rèn)真努力編寫出有個性且可讀性和應(yīng)用性較強(qiáng)的數(shù)據(jù)結(jié)構(gòu)系統(tǒng)。附錄源文件#include<stdio.h>#include<stdlib.h>#include<string.h>#include"LinkList.h"intflag1=0; //全局變量flag1為0voidmain(){ intk,j=1; ListNode*l; while(j) { printf("\t\t\t熊信萌通訊錄課程設(shè)計\n"); printf("\t\t\t********************************"); printf("\n\t\t\t1.通訊錄的建立"); printf("\n\t\t\t2.通訊者的插入"); printf("\n\t\t\t3.通訊者的查詢"); printf("\n\t\t\t4.通訊者的刪除");printf("\n\t\t\t5.通訊者的修改"); printf("\n\t\t\t6.通訊錄的輸出"); printf("\n\t\t\t7.男生女生的人數(shù)"); printf("\n\t\t\t0.退出通訊錄管理系統(tǒng)"); printf("\n\t\t\t******************************"); printf("\n請選擇菜單號(0--6):"); scanf("%d",&k); getchar(); switch(k) { case1: { printf("\n1.通訊錄的建立\n"); head=CreateList(); flag1=1; break; } case2: { if(flag1!=1) { printf("請先建立表!"); getchar(); } else { printf("\n2.通訊者信息的插入\n"); printf("\n編號姓名性別電話\n"); printf("\n"); p=(ListNode*)malloc(sizeof(ListNode));/*申請新結(jié)點*/ printf("輸入編號:\n"); scanf("%s",p->data.number); printf("輸入姓名:\n"); scanf("%s",p->); printf("輸入性別:\n"); scanf("%s",p->data.sex); printf("輸入電話:\n"); scanf("%s",p->data.telephone); AddNode(head,p); printf("排序:\n");OrderList(l);//調(diào)用通訊錄排序函數(shù)此處放在插入模塊下面} break; } case3: { if(flag1!=1) { printf("請先建立表!"); getchar(); } else { printf("\n3.通訊錄信息的查詢\n"); p=ListFind(head); if(p!=NULL) { printf("編號姓名性別聯(lián)系電話\n"); printf("\n"); printf("編號:%s\n姓名:%s\n性別:%s\n聯(lián)系電話:%s\n", p->data.number,p->,p->data.sex,p->data.telephone); printf("\n"); } elseprintf("沒有查到要查詢的通訊者!\n"); break; } case4: { if(flag1!=1) { printf("請先建立表!"); getchar(); } else { printf("\n4.通訊錄信息的刪除\n"); DeleteNode(head);/*刪除結(jié)點*/ } break; } case5: { if(flag1!=1) { printf("請先建立表!"); getchar(); } else { printf("\n5.通訊錄信息的修改\n"); AlterNode(head); } break; } case6: { if(flag1!=1) { printf("請先建立表!"); getchar(); } else { printf("\n6.通訊錄鏈表的輸出\n"); PrintList(head); } break; } case7: { if(flag1!=1) { printf("請先建立表!"); getchar(); } else { printf("\n7.通訊錄中男生女生的人數(shù)\n"); Seachbysex(head); } break; } case0: printf("是否退出(y/n)?"); k=getchar(); if(k=='y'||k=='Y') { j=0; printf("\n\n\t\t\t謝謝使用!謝謝使用!"); printf("\n按任意鍵退出"); } break; default: printf("\n輸入有錯,請重新輸入!\n"); printf("\n按任意鍵繼續(xù)..."); getchar(); break; } }}}頭文件typedefstruct//通訊錄數(shù)據(jù)類型{charnumber[3];//編號charname[9];//姓名charsex[10];//性別chartelephone[11];//電話}DataType;typedefstructnode//結(jié)點類型定義{ DataTypedata;//結(jié)點數(shù)據(jù)域structnode*next;//結(jié)點指針域}ListNode;typedefListNode*LinkList;LinkListhead;ListNode*p;LinkListCreateList()//尾插法建立帶頭結(jié)點的通訊錄鏈表算法{ LinkListhead=(ListNode*)malloc(sizeof(ListNode));//申請頭結(jié)點 ListNode*p,*rear; charflag='y'; //結(jié)束標(biāo)志置y rear=head;//尾指針初始指向頭結(jié)點 while(flag=='y') { p=(ListNode*)malloc(sizeof(ListNode));//申新結(jié)點 printf("編號姓名性別電話\n"); printf("\n"); printf("輸入的編號:\n"); scanf("%s",p->data.number); printf("輸入的姓名:\n"); scanf("%s",p->); printf("輸入性別:\n"); scanf("%s",p->data.sex); printf("輸入電話:\n"); scanf("%s",p->data.telephone); rear->next=p;//新結(jié)點連接到尾結(jié)點之后 rear=p;//尾指針指向新結(jié)點 printf("繼續(xù)建表?(y/n):"); scanf("%s",&flag); } rear->next=NULL;//終端結(jié)點指針置空 returnhead;//返回鏈表頭指針}voidAddNode(LinkListhead,ListNode*p)//在通訊錄鏈表head中插入結(jié)點{ListNode*p1,*p2;p1=head;p2=p1->next;while(p2!=NULL&&strcmp(p2->data.number,p->data.number)<0){p1=p2;//p1指向剛訪問過的結(jié)點p2=p2->next;//p2指向表的下一個結(jié)點}p1->next=p;//插入p所指向的結(jié)點p->next=p2;//連接表中剩余的結(jié)點}//新增通信錄排序模塊,排序比較簡單,通過不斷比較,結(jié)點指針相互賦值交換解決voidOrderList(ListNode*&l)//按編號排序,調(diào)用插入函數(shù)之后才可以排序{ ListNode*p,*q,*s; q=head; p=q->next->next; q->next->next=NULL; while(p) { while(q->next&&(strcmp(p->data.number,q->next->data.number)>0))//比較字符串 q=q->next; s=p->next; p->next=q->next; q->next=p; p=s; q=head; }} ListNode*ListFind(LinkListhead)//有序通訊錄鏈表的查找{ListNode*p;charnumber[10];charname[20]; chart;printf("\n");printf("1.按編號\n");printf("2.按姓名\n");printf("\n");printf("請選擇1/2:");p=head->next;//假定通訊錄表帶有結(jié)點 scanf("%d",&t);if(t==1) { printf("請輸入所求的編號:"); scanf("%s",number); while(p&&strcmp(p->data.number,number)<0)//優(yōu)化的地方 p=p->next; if(p==NULL||strcmp(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版綠色包裝材料研發(fā)及推廣合同2篇
- 2025年度石料廠產(chǎn)品質(zhì)量安全承包管理合同范本2篇
- 二零二五年度城市綜合體建筑設(shè)計合同3篇
- 2025年度高新技術(shù)企業(yè)知識產(chǎn)權(quán)質(zhì)押擔(dān)保合同范本3篇
- 二零二五版農(nóng)村小微企業(yè)發(fā)展借款合同解析論文3篇
- 二零二五年生物制藥工藝技術(shù)聘用合同2篇
- 二零二五版股權(quán)代持協(xié)議簽訂前的合同談判注意事項3篇
- 二零二五年度建筑工程安全施工環(huán)境保護(hù)監(jiān)理合同3篇
- 二零二五版購房合同違約責(zé)任條款解析3篇
- 2025年度緊急物資承攬運(yùn)輸合同3篇
- 停車場施工施工組織設(shè)計方案
- GB/T 37238-2018篡改(污損)文件鑒定技術(shù)規(guī)范
- 普通高中地理課程標(biāo)準(zhǔn)簡介(湘教版)
- 河道治理工程監(jiān)理通知單、回復(fù)單范本
- 超分子化學(xué)簡介課件
- 高二下學(xué)期英語閱讀提升練習(xí)(一)
- 易制爆化學(xué)品合法用途說明
- 【PPT】壓力性損傷預(yù)防敷料選擇和剪裁技巧
- 大氣喜慶迎新元旦晚會PPT背景
- DB13(J)∕T 242-2019 鋼絲網(wǎng)架復(fù)合保溫板應(yīng)用技術(shù)規(guī)程
- 心電圖中的pan-tompkins算法介紹
評論
0/150
提交評論