链表基础篇3-25

6-1单链表遍历

void Traverse ( LinkList L )
{
    LinkList p;
    p=L->next;
    while(p)
    {
        printf("%d ",p->data);
        p=p->next;//下移
    }
}

6-2求单链表表长

int Length ( LinkList L )

{

    LinkList p;

    p=L->next;

    int x=0;

    while(p)

    {

        p=p->next;//下移

        x++;

    }

    return x;

}

6-3求单链表元素序号

int Locate ( LinkList L, ElemType e)

{

 int count=1;//无情计数器,从1开始。下面的第一个if判断若第一次就判得p指e,那就直接输出地址为1(首元结点嘛,题目也说了序号从1开始的)

 LNode *p;//弄一个指针p

 p=L->next;

 while(p!=NULL)//只要p不是NULL,就一直循环下去。p是NULL,跳出循环

 {

  if(p->data==e)//当p所指为e时,即可输出地址

   return count;

  p=p->next;//否则,继续p=p->next

  count++;//计数器再加

 }

 if(p==NULL)

 return 0;

}

6-4统计单链表元素出现次数

 

int GetCount ( LinkList L,ElemType e )

{

    int cnt=0;

    while(L->data!=-1&&L->next!=NULL)

    {

        if(L->data==e)

        {

            cnt++;

        }

        L=L->next;

    }

    if(cnt==0)

        return 0;

    else 

        return cnt+1;/"?为啥加1

}

6-5带头结点的单链表就地逆置

 

void reverse ( LinkList L )

{

    LinkList p=L->next,q;

    L->next=NULL;

    while(p!=NULL)

    {

        q=p;

        p=p->next;

        q->next=L->next;

        L->next=q;

    }

}

6-6带头结点的单链表插入操作

int insert_link ( LinkList L,int i,ElemType e)

{

    int j=1;

    LinkList p,s;

    p=L;

    while(p&&j<i)

    {

        p=p->next;

        j++;

    }

    if(!p||j>i)

        return 0;

    s=(LinkList)malloc(sizeof(LNode));

    s->data=e;

    s->next=p->next;

    p->next=s;

    return 1;

}

6-7带头结点的单链表删除操作

int delete_link ( LinkList L,int i)

{

    LinkList p,q;

    int j=0;

    p=L;

    while((p->next)&&j<i-1)

    {

        p=p->next;

        j++;

    }

    if(!(p->next)||(j>i-1))

        return 0;

    q=p->next;

    p->next=q->next;

    free(q);

    return 1;

}

6-8在带头结点的单链表表尾处插入一个新元素

void insert ( LinkList L,ElemType e)

{

    LinkList p=L,s;

    while(p->next)

    {

        p=p->next;

    }

    s=(LinkList)malloc(sizeof(LNode));

    s->data=e;

    s->next=p->next;

    p->next=s;

}

6-9删除非空单链表的表尾元素

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值