資源描述:
《關于線性表順序存儲操作的16種算法》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。
1、#include?#include?typedef?int?elemType;/************************************************************************//*????????????????以下是關于線性表順序存儲操作的16種算法???????????????????????*//************************************************************************/struct?List
2、{????elemType?*list;????int?size;????int?maxSize;};void?againMalloc(struct?List?*L){????????/*?空間擴展為原來的2倍,并由p指針所指向,原內(nèi)容被自動拷貝到p所指向的存儲空間?*/????elemType?*p?=?realloc(L->list,?2?*?L->maxSize?*?sizeof(elemType));????if(!p){????/*?分配失敗則退出運行?*/????????printf("存儲空間分配失?。?);????????exit(1);
3、????}????L->list?=?p;????/*?使list指向新線性表空間?*/????L->maxSize?=?2?*?L->maxSize;????/*?把線性表空間大小修改為新的長度?*/}/*?1.初始化線性表L,即進行動態(tài)存儲空間分配并置L為一個空表?*/void?initList(struct?List?*L,?int?ms){????/*?檢查ms是否有效,若無效的則退出運行?*/????if(ms?<=?0){????????printf("MaxSize非法!");????????exit(1);????/*?執(zhí)行此函數(shù)中止程序
4、運行,此函數(shù)在stdlib.h中有定義?*/????}????L->maxSize?=?ms;????/*?設置線性表空間大小為ms?*/????L->size?=?0;????L->list?=?malloc(ms?*?sizeof(elemType));????if(!L->list){????????printf("空間分配失?。?);????????exit(1);????}????return;}/*?2.清除線性表L中的所有元素,釋放存儲空間,使之成為一個空表?*/void?clearList(struct?List?*L){????if(L
5、->list?!=?NULL){????????free(L->list);????????L->list?=?0;????????L->size?=?L->maxSize?=?0;????}????return;}/*?3.返回線性表L當前的長度,若L為空則返回0?*/int?sizeList(struct?List?*L){????return?L->size;}/*?4.判斷線性表L是否為空,若為空則返回1,?否則返回0?*/int?emptyList(struct?List?*L){????if(L->size?==0){????????retu
6、rn?1;????}????else{????????return?0;????}}/*?5.返回線性表L中第pos個元素的值,若pos超出范圍,則停止程序運行?*/elemType?getElem(struct?List?*L,?int?pos){????if(pos?
7、
8、?pos?>?L->size){????/*?若pos越界則退出運行?*/????????printf("元素序號越界!");????????exit(1);????}????return?L->list[pos?-?1];????/*?返回線性表中序號為pos值的元素值?*
9、/}/*?6.順序掃描(即遍歷)輸出線性表L中的每個元素?*/void?traverseList(struct?List?*L){????int?i;????for(i?=?0;?i?size;?i++){????????printf("%d?",?L?->list[i]);????}????printf("");?????return;}/*?7.從線性表L中查找值與x相等的元素,若查找成功則返回其位置,否則返回-1?*/int?findList(struct?List?*L,?elemType?x){????int?i;????for(i?
10、=?0;?i?size;?i++){????????if(L->lis