#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編譯


另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網站題目:C++簡單單向鏈表實現-創新互聯
鏈接URL:http://www.yijiale78.com/article8/phhip.html
成都網站建設公司_創新互聯,為您提供網站導航、微信公眾號、App開發、建站公司、外貿建站、網站設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯