您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“c#線性表中鏈表怎么用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“c#線性表中鏈表怎么用”這篇文章吧。
單鏈表也是一種鏈式存取的線性表,用一組地址任意的存儲單元存放線性表中的數據元素。鏈表中的數據是以結點來表示的,以next指針指向下一個節點而鏈接起來,相比于順序表,鏈表有著快速增加,刪除節點的優勢,其節點的隨機訪問效率較低。
頭文件:
/***************************************************************************************************** *Copyright:Yue Workstation * *FileName:LineTable.h * *Function:單鏈表相關數據定義和函數聲明 *****************************************************************************************************/ #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:創建一個單鏈表 * *Parameter: L:單鏈表表頭, * n:單鏈表長度 * *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:無 ***************************************************************************************************/ void PrintSingleList(LinkList L) { L = L->next; while(L) { printf("%d---",L->data); L = L->next; } putchar('\n'); return ; } /**************************************************************************************************** *Function Name:InsertSingleList * *Function:在i位置插入一個元素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:獲取單鏈表長度 * *Parameter: L:單鏈表表頭 * *Return Value:單鏈表長度 * ***************************************************************************************************/ int GetSingleListLength(LinkList L) { if(L == NULL) { return -1; } return L->data; } /**************************************************************************************************** *Function Name:DestroySingleList * *Function:銷毀一個單鏈表 * *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#線性表中鏈表怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。