首页 > 其他 > 详细

单链表

时间:2019-07-13 20:57:47      阅读:110      评论:0      收藏:0      [点我收藏+]

建表、删除

typedef struct LNode
{
    int data;
    struct LNode *next;
}*Slink;

LNode *p,*q;//指向链表节点的p,q指针 
Slink H;//指向链表,头指针 

void InitList(Slink &L)
{
    L = new LNode;
    if(!L) cout<<"空间分配失败";
    L->next = NULL;
}

void DestroyList(Slink &L)
{
    while(L)
    {
        p = L;
        L = L->next;
        delete p;
    }
L
= NULL;//头结点占有的空间被释放,但指针L的值不变,为安全起见,置L为空 }

搜索

void GetElem(Slink &L,int pos,int &e) 
{
    int i = 0;
    p = L;
    while(p && i<pos)
    {
        i++;
        p = p->next;
    }
    if(p == NULL)cout << "false";
    else e = p->data;
    
    p = NULL;
}

插入

void InsertElem(Slink &L,int pos,int &e) 
{
    int i = 0;
    p = L;
    while(p && i < pos-1)
    {
        i++;
        p = p->next;
    }
    
    if(i != pos-1)cout<<"false";
    else 
    {
        q = new LNode;
        q->data = e;
        
        q->next = p->next;
        p->next = q;
    }
    
    p = NULL;
    q = NULL;
}

删除

bool ListDelete(SLink &L,int pos,int &e)
{
    p = L;j = 0;
while(p->next && j < pos-1) p = p->next;
if((!p->next) || j > pos-1)return FALSE; q = p->next; p->next = q->next; e = q->next; delete(q);//释放节点空间

return TRUE; }

 交换前后两段

void exchange_L(SLink &L,int m)
{
    if(m && L->next)
    {
        p = L->next;
        k = 1;
        while(k < m && p)
            p = p->next,++k;
        if(p && p->next)
        {
            ha = L->next;
            L->next = p->next;
            p->next = NULL;
            q = L->next;
            while(q->next)q = q->next;
            q->next = ha;
        }
    }
}

 

单链表

原文:https://www.cnblogs.com/Cindy-Chan/p/11179597.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!