欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

单向链表

程序员文章站 2022-05-22 19:55:10
...

单向链表


  • 相关函数代码整理笔记

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 ;
}

相关标签: Data Structure