您好,登錄后才能下訂單哦!
#include?"pch.h" #include?<iostream> //創建鏈表 typedef?struct?ListTable? { int?nElement;????//鏈表元素 int?nSequence;???//節點序號 ListTable?*pNext;//下一個節點 }ListTable; //初始化鏈表 //參數:元素的值 ListTable*?initListTable(int?nNum) { //頭結點 ListTable?*head; //申請內存 head?=?(ListTable*)malloc(sizeof(ListTable)); //初始化成員變量 head->nElement?=?nNum; head->nSequence?=1; head->pNext?=?NULL; //返回頭結點指針 return?head; } //插入元素 //參數:鏈表指針?元素的值 void?insertElement(ListTable?*list,?int?nNum) { //創建局部變量 ListTable?*pList?=?list; int?nCount?=?list->nSequence; //申請新的節點空間 ListTable?*pNode?=?(ListTable*)malloc(sizeof(ListTable)); //遍歷鏈表 while?(pList?!=?NULL) { //如果下一個節點為空,則插入元素 if?(pList->pNext?==NULL) { pList->pNext?=?pNode; pNode->nSequence?=?nCount?+?1; pNode->nElement?=?nNum; pNode->pNext?=?NULL; return; } nCount?+=?1; pList?=?pList->pNext; } } //刪除指定序號元素 //參數:鏈表指針??元素序號 void?deleteElement(ListTable?*list,int?nSequence) { //如果是第一個節點,直接free if?(list->nSequence?==?nSequence) { free(list); return; } //創建局部變量 ListTable?*pList?=?list; ListTable?*pTmp=NULL; //遍歷鏈表 while?(pList!=NULL) { //如果序號相等,刪除指定序號元素 if?(pList->pNext->nSequence?==?nSequence) { pTmp?=?pList->pNext->pNext; free(pList->pNext); pList->pNext?=?pTmp; //之后的序號依次減一 while?(pTmp?!=?NULL) { pTmp->nSequence?-=?1; pTmp?=?pTmp->pNext; } return; } pList?=?pList->pNext; } printf("節點不存在!\n"); } //修改元素 //參數:鏈表指針??元素序號??元素的值 void?changeElement(ListTable?*list,?int?nSequence,int?nNum) { ListTable?*pList?=?list; while?(pList?!=?NULL) { if?(pList->nSequence?==?nSequence) { pList->nElement?=?nNum; return; } pList?=?pList->pNext; } printf("節點不存在!\n"); } //釋放鏈表 //參數:鏈表指針 void?deleteListTable(ListTable?*list) { ListTable?*pList?=?list; ListTable?*pTmp=NULL; while?(pList?!=?NULL) { pTmp=?pList->pNext; free(pList); pList?=?pTmp; } printf("釋放完成!\n"); } //遍歷鏈表元素 //參數:鏈表指針 void?showElement(ListTable?*list) { ListTable?*pList?=?list; if?(pList?==?NULL) { printf("鏈表為空!\n"); return; } while?(pList?!=?NULL) { printf("鏈表元素:%d??元素序號:%d\n",?pList->nElement,?pList->nSequence); pList?=?pList->pNext; } } int?main() { //初始化鏈表?第一個元素為1 ListTable?*list=?initListTable(1); //插入2,3,4,5四個元素 insertElement(list,?2); insertElement(list,?3); insertElement(list,?4); insertElement(list,?5); //修改序號5的元素為6 changeElement(list,?5,?6); //刪除序號為3的元素 deleteElement(list,?3); //遍歷 showElement(list); //釋放 deleteListTable(list); }
vs2017編譯
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。