linklist template

#include <iostream.h>
typedef int ElemType; 
typedef struct LNode 
{
    ElemType data;
    struct LNode *next; 
}LNode;

void CreateList(LNode *&L,int a[],int n)
{   
    LNode *p;
    L=new LNode;
    L->next=NULL;
    while (n)
    {
        p=new LNode;
        p->data=a[n-1];
        p->next=L->next;
        L->next=p;
        n--;
    }   
}
void DispList(LNode *L)
{
    LNode *p;
    p=L->next;
    while(p)
    {cout<<p->data<<'\t';p=p->next;}
    cout<<endl;
}
void UnionList(LNode* &L1,LNode *L2)
{
    LNode *pa,*pb,*pc;
    pa=L1->next;
    pb=L2->next;
    L1->next=NULL;
    pc=L1;
    while(pa&&pb)
    {
        if(pa->data<pb->data)
        {pc->next=pa;pc=pa;pa=pa->next;}
        else
        {pc->next=pb;pc=pb;pb=pb->next;}
    }
    while(pa)
    {pc->next=pa;pc=pa;pa=pa->next;}
    while(pb)
    {pc->next=pb;pc=pb;pb=pb->next;}
    pc->next=NULL;
}
void ListReverse(LNode* &L)//similar to head fist insert method
{
    LNode* p,*q;
    p=L->next;
    L->next=NULL;//separate head and first elem node
    while(p)     //add node one by one
    {
        q=p->next;
        p->next=L->next;
        L->next=p;
        p=q;
    }
}

void main()
{
    LNode *L1,*L2;
    ElemType a[10]={2,4,6,8};
    ElemType b[10]={1,3,5,7};
    CreateList(L1,a,4);
    DispList(L1);
    ListReverse(L1);
    DispList(L1);
}

 

posted on 2017-03-03 15:52  ewitt  阅读(206)  评论(0编辑  收藏  举报

导航