c#线性表中链表怎么用

这篇文章主要为大家展示了“c#线性表中链表怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“c#线性表中链表怎么用”这篇文章吧。

网站建设、做网站介绍好的网站是理念、设计和技术的结合。成都创新互联公司拥有的网站设计理念、多方位的设计风格、经验丰富的设计团队。提供PC端+手机端网站建设,用营销思维进行网站设计、采用先进技术开源代码、注重用户体验与SEO基础,将技术与创意整合到网站之中,以契合客户的方式做到创意性的视觉化效果。

单链表也是一种链式存取的线性表,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,以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 && jnext; 
        ++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 && jnext; 
        ++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#线性表中链表怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


名称栏目:c#线性表中链表怎么用
当前链接:http://myzitong.com/article/ijddhs.html