您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“c#線性表中鏈表怎么用”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“c#線性表中鏈表怎么用”這篇文章吧。
單鏈表也是一種鏈?zhǔn)酱嫒〉木€性表,用一組地址任意的存儲(chǔ)單元存放線性表中的數(shù)據(jù)元素。鏈表中的數(shù)據(jù)是以結(jié)點(diǎn)來(lái)表示的,以next指針指向下一個(gè)節(jié)點(diǎn)而鏈接起來(lái),相比于順序表,鏈表有著快速增加,刪除節(jié)點(diǎn)的優(yōu)勢(shì),其節(jié)點(diǎn)的隨機(jī)訪問(wèn)效率較低。
頭文件:
/***************************************************************************************************** *Copyright:Yue Workstation * *FileName:LineTable.h * *Function:單鏈表相關(guān)數(shù)據(jù)定義和函數(shù)聲明 *****************************************************************************************************/ #ifndef SINGLE_LIST_H #define SINGLE_LIST_H #include "global.h" typedef struct LNode { ElemType data; struct LNode *next; }LNode,*LinkList; int CreateSingleList(LinkList *L,int n); void PrintSingleList(LinkList L); int InsertSingleList(LinkList *L,int i,ElemType e); int DeleteSingleList(LinkList *L,int i,ElemType *e); int GetSingleListLength(LinkList L); void DestroySingleList(LinkList *L); #endif
源文件:
/***************************************************************************************************** *Copyright:Yue Workstation * *FileName:SingleList.c * *Function:單鏈表基本操作 *****************************************************************************************************/ #include "../inc/SingleList.h" /**************************************************************************************************** *Function Name:CreateSingleList * *Function:創(chuàng)建一個(gè)單鏈表 * *Parameter: L:單鏈表表頭, * n:單鏈表長(zhǎng)度 * *Return Value:成功返回0,失敗返回-1 ***************************************************************************************************/ int CreateSingleList(LinkList *L,int n) { int i = 0; LinkList p1,p2; *L = (LinkList)malloc(sizeof(LNode)); if(*L == NULL) { perror("malooc error\n"); return -1; } (*L)->data = 0; (*L)->next = NULL; p1 = *L; p2 = *L; for(i=1; i<=n; i++) { p1 = (LinkList)malloc(sizeof(LNode)); if(p1 == NULL) { perror("malooc error\n"); return -1; } p1->data = i; p2->next = p1; p2 = p1; } p2->next = NULL; (*L)->data = n; return 0; } /**************************************************************************************************** *Function Name:PrintSingleList * *Function:打印單鏈表表中的元素 * *Parameter: L:單鏈表表頭 * *Return Value:無(wú) ***************************************************************************************************/ void PrintSingleList(LinkList L) { L = L->next; while(L) { printf("%d---",L->data); L = L->next; } putchar('\n'); return ; } /**************************************************************************************************** *Function Name:InsertSingleList * *Function:在i位置插入一個(gè)元素e * *Parameter: L:單鏈表表頭, * i:元素位置 * e:要插入的元素 * *Return Value:成功返回0,失敗返回-1 ***************************************************************************************************/ int InsertSingleList(LinkList *L,int i,ElemType e) { LinkList p1 = (*L)->next; LinkList p2 = (*L)->next; int j = 1; while(p1 && j<i-1) { p1 = p1->next; ++j; } if(!p1 || j>i-1) { perror("Insert position error,the parameter i is error!\n"); return -1; } p2 = (LinkList)malloc(sizeof(LNode)); p2->data = e; p2->next = p1->next; p1->next = p2; (*L)->data += 1; return 0; } /**************************************************************************************************** *Function Name:DeleteSingleList * *Function:在制定位置刪除單鏈表中的元素 * *Parameter: L:單鏈表表頭, * i:元素位置 * e:要插入的元素 * *Return Value: 成功返回0,失敗返回-1 ***************************************************************************************************/ int DeleteSingleList(LinkList *L,int i,ElemType *e) { LinkList p1 = (*L)->next; LinkList p2 = NULL; int j = 1; while(p1 && j<i-1) { p1 = p1->next; ++j; } if(!p1 || j>=i) { perror("Delete position error,the parameter i is error!\n"); return -1; } p2 = p1->next; p1->next = p2->next; *e = p2->data; free(p2); (*L)->data -= 1; return 0; } /**************************************************************************************************** *Function Name:GetSingleListLength * *Function:獲取單鏈表長(zhǎng)度 * *Parameter: L:單鏈表表頭 * *Return Value:單鏈表長(zhǎng)度 * ***************************************************************************************************/ int GetSingleListLength(LinkList L) { if(L == NULL) { return -1; } return L->data; } /**************************************************************************************************** *Function Name:DestroySingleList * *Function:銷(xiāo)毀一個(gè)單鏈表 * *Parameter: L:單鏈表表頭 * ***************************************************************************************************/ void DestroySingleList(LinkList *L) { LinkList p1 = *L; LinkList p2 = *L; while(p1 != NULL) { p2 = p1; p1 = p1->next; free(p2); } *L = NULL; return; }
以上是“c#線性表中鏈表怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。