单向链表

#单向链表

  • 相关函数代码整理笔记
    ###code
#include<iostream>
#include<cstdlib>
using namespace std;

typedef struct LNode{
    int data;
    struct LNode *next;
}LNode,*LinkList;

void CreateLink(LinkList &l,int n)
{
    l=new LNode[n+1];
    l[0].data=0;
    l[0].next=l+1;
    for(int i=1;i<=n;i++){
        cin>>l[i].data;
        if(i<n)
            l[i].next=l+i+1;
    }
    l[n].next=NULL;
}

void PrintLink(LinkList &l)
{
    LinkList p=l->next;
    while(p){
        cout<<(p->data)<<' ';
        p=p->next;
    }
    cout<<"\b"<<endl;
}

void InitLink(LinkList &l,int n)
{
    l=(LinkList)malloc(sizeof(LNode)*(n+1));
    l->data=0;
    l[0].next=l+1;
    for(int i=1;i<=n;i++){
        cin>>((l+i)->data);
        l[i].next=l+i+1;
    }
    l[n].next=NULL;
}

void GetElem(LinkList &l,int k,int &e)
{
    e=-1;
    LinkList p=l->next;
    int j=1;
    while(p && j<k){
        p=p->next;
        j++;
    }
    if(!p || j>k){
        cout<<"ERROR!"<<endl;
        return ;
    }
    e=p->data;
}

void InsertLink(LinkList &l,int k,int e)
{
    LinkList p;
    p=new LNode;
    p->data=e;
    p->next=(l+k-1)->next;
    (l+k-1)->next=p;
}

void DelLink(LinkList &l,int k)
{
    (l+k-1)->next=(l+k)->next;
    delete (l+k);
}

void MergeLink(LinkList &l1,LinkList &l2,LinkList &l3)
{
    l3=new LNode;
    LinkList p=l1->next,q=l2->next,t;
    t=l3;
    while(p && q){
        if((p->data)<(q->data)){
            t->next=p;
            t=t->next;
            p=p->next;
        }
        else{
            t->next=q;
            t=t->next;
            q=q->next;
        }
    }
    t->next=(p?p:q);
    return ;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值