链表的基本操作

本文深入讲解了链表的基本概念及其实现方式,包括链表的结构定义、链表长度的计算、元素查找、插入和删除操作的具体实现。通过示例代码,详细解析了链表在数据结构中的应用。

链表的形式相对于数组比较复杂,它是一个结构体的形式如下:

struct node
{
    int data ; 
    struct node *next ; 
}
/////////////////////////////////////////////////////////////////
typedef struct node
{
    int data;  
    struct node *next ; 
}NODE  ; 

上面是两种链表的形式,可以看出链表分为数据域和指针域两部分组成。

 知道了链表的一般形式以后,下面是对链表的一些基础的操作:

1.求表长

int length(NODE *head )
{
    int number  ;  
    NODE *p  ;
    number = 0 ;  
    while(p){
    p = p->next ; 
    number ++ ; 
    } 
return number ; 
}

2.查找

按序号查找

int find (NODE *head , int k )
{
    NODE *P  ;
    int i = 0  ;
    p =  head ;
    while(i<k&&p!=NULL)
    {
        i++ ;
        p = p->next ;
    }
    if( i == k )
        return p->data ;
    else
        return -1 ;
}

桉数查找序号

int find (NODE *head ,int key )
{
    int i = 0 ;
    NODE *p ;
    p = head ;
    while(p&&p->data != key )
    {
        i++ ;
    }
    if(p->data  ==  key )
        return i ;
    else
        return -1 ;
}

3插入

NODE *insert(NODE *head , int k , int x)
{
    int i = 0 ; 
    NODE *p ,*q ;
    p = head ;  
    for( i = 0 ; i<=k ; i++)
    {
        p =p->next ; 
    }
    q = (NODE *)malloc(sizeof(NODE)) ; 
    q ->data = x ;  
    q->next = p->next ; 
    p->next =q ; 
    return head ; 
}

4删除

 

NODE *del (NODE *head, int key )
{
    NODE *p , *q ;
    int i = 0 ;
    p = head ;
    while(i<key )
    {
        p = p->next ;
    }
    q = p->next ;
    p->next = q->next ;
    free(q) ;
    return head ;
}

5建表

链接:https://blog.youkuaiyun.com/qq_43345339/article/details/84943194 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值