线性表的链式表示与实现

单链表的定义和表示

单链表由头指针唯一确定,在C语言中可用“结构指针”来描述:

单链表的存储结构:

typedef struct LNode
{

    ElemType data;
    struct LNode *next;
}LNode,*LinkList;
单链表的初始化
Status InitList(LinkList &L)
{
    L=new LNode;
    L->next=NULL;
    return Ok;
}
单链表的取值
Status GetElem(LinkList L,int i,ElemType &e)
{
    p=L->next;
    j=1;
    while(p&&j<i)
    {
        p=p->next;
        j++;
    }
    if(!p||j>i) return ERROR;
    e=p->data;
    return OK;
}
单链表的按值查找
LNode *LocateElem(LinkList L,ElemType e)
{
    p=L->next;
    while(p&&p->data!=e)
    p=p->next;
    return p;
}
单链表的插入
Status ListInsert(LinkList &L,int i,ElemType e)
{
    p=L;
    j=0;
    while(p&&(j<i-1))
    {
        p=p->next;
        j++;
    }
    if(!p||j>i-1)
    return ERROR;
    s=new LNode;
    s->data=e;
    s->next=p->next;
    p->next=s;
    return OK;
}
单链表的删除
Status ListDelete(LinkList &L,int i)
{
    p=L;
    j=0;
    while((p->next)&&(j<i-1))
    {
        p=p->next;
        j++;
    }
    if(!(p->next)||(j>i-1)) return ERROR;
    q=p->next;
    p->next=q->next;
    delete q;
    return OK;
}
前插创建单链表
void CreateList_H(LinkList &L,int n)
{
    L=new LNode;
    L->next=NULL;
    for(i=0;i<n;i++)
    {
        p=new LNode;
        cin>>p->data;
        p->next=L->next;
        L->next=p;
    }
}
后插创建单链表
    void CreateList_R(LinkList &L,int n)
    {
        L=new LNode;
        L->next=NULL;
        r=L;
        for(i=0;i<n;i++)
        {
            p=new LNode;
            cin>>p->data;
            p->next=NULL;
            r->next=p;
            r=p;
        }
    }

版权声明:
作者:maple
链接:https://www.maplezeroz.com/?p=252
来源:我的学习笔记
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
线性表的链式表示与实现
单链表的定义和表示 单链表由头指针唯一确定,在C语言中可用“结构指针”来描述: 单链表的存储结构: typedef struct LNode {     ElemType data;     struct ……
<<上一篇
下一篇>>