首页 > 代码库 > 单链表的基本操作

单链表的基本操作

1,单链表储存结构

 

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

2,创建单链表(头插法和尾插法)

LinkList Creat_tail_LinkList()       //尾插法:
{
     LinkList L,p;
     L=(LinkList)malloc(sizeof(LNode));
     L->next=NULL;
     int n,x;
     scanf("%d",&n);
     for(int i=n;i>0;i--)
     {
         scanf("%d",&x);
         p=(LinkList)malloc(sizeof(LNode));
         p->data=http://www.mamicode.com/x;>
3. 查找元素:

LinkList Locate_anw_LinkList(LinkList L,ElemType e)     //按值查找
{
    scanf("%d",&e);
    LinkList p=L->next;
    while(p&&p->data!=e)
        p=p->next;
    return p;
}

int Locate_cur_LinkList(LinkList L,ElemType cur,ElemType &tot)   //按位置查找并将元素输出;
{
    scanf("%d",&cur);
    int j;
    LinkList p=L->next;
    j=1;
    while(p&&j<cur)
    {
        p=p->next;
        j++;
    }
    if(!p||j>cur)  return 0;
    tot=p->data;
    return 1;
}

4插入元素

 

void Insert_LinkList(LinkList &L,ElemType cur,ElemType hh)         //在指定位置插入元素
{
    LinkList p,s;
    p=L;
    int j=0;
    while(p&&j<cur-1)     //注意点:&&
    {
        p=p->next;
        j++;
    }
    if(!p||j>cur-1)  return ;
    s=(LinkList)malloc(sizeof(LNode));
    s->data=http://www.mamicode.com/hh;>
5删除元素

int Dele_LinkList(LinkList &L,ElemType cur,ElemType &ss)      //在指定位置删除元素
{
    LinkList p;
    p=L;
    int j=0;
    while(p->next&&j<cur-1)
    {
        p=p->next;
        j++;
    }
    if(!p->next||j>cur-1)  return 0;
    ss=p->next->data;
    p->next=p->next->next;
    return 1;
}

6输出单链表元素

void Printf_LinkList(LinkList L)                //输出单链表中的元素
{
    LinkList p;
    p=L->next;
    while(p)
    {
        printf("%d ",p->data);
        p=p->next;
    }
    printf("\n");
}

7单链表合并

void Merge_LinkList(LinkList &La,LinkList &Lb,LinkList &Lc)      //合并两个递增单链表
{
    //LNode *pa,*pb,*pc;
    LinkList pa,pb,pc;
    pa=La->next;
    pb=Lb->next;
    Lc=pc=La;
    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;
        }
    }
    pc->next=pa?pa:pb;
    free(Lb);
}



单链表的基本操作