溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

c#線性表中鏈表怎么用

發(fā)布時(shí)間:2022-01-15 14:27:54 來(lái)源:億速云 閱讀:122 作者:小新 欄目:編程語(yǔ)言

這篇文章主要為大家展示了“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è)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI