链表的实现原理

首先我们要建立一个数据结构来存放链表的节点,可以通过结构体来实现

typedef struct node
{
  unsigned long int data;
  struct node* next;
}node_t;

一、创建一个节点
第一步,实现定义一个临时变量,并将其初始化
第二步,判断其头结点是否为空节点,如果是空节点,则将临时头指针指向临时变量
第三步,头结点不是空节点,则将头结点指向临时变量的下一个节点 ,并将头结点指向那个节点

node_t* link_create(node_t* head,unsigned long int data)
{
    node_t* temp = MALLOC;
    temp->data = data;
    if(head == NULL)
    {
        temp->next = NULL;
        head = temp;
    }
    else
    {
        temp->next = head;
        head = temp;
    }
    return head;
}

二、删除一个节点
第一步,定义两个指针变量分别为temp1,temp2指向头结点
第二步,如果temp1不等于用户要查找的值得节点,则让temp2指向temp1;
temp1指向下一个节点,直到指针指到用户要查到的地方
第三步,此时temp1指向的是当前需要删除的节点,temp2指向的是前一个节点,所以我们将temp2的指针指向temp1的下一个节点,并释放出temp1的节点

node_t* link_create(node_t* head,unsigned long int data)
{
    node_t* temp = MALLOC;
    temp->data = data;
    if(head == NULL)
    {
        temp->next = NULL;
        head = temp;
    }
    else
    {
        temp->next = head;
        head = temp;
    }
    return head;
}

三 、修改一个节点
通过查找函数,找到当前需要修改的节点的位置,并对当前节点进行赋值操作,从而实现可以进行修改操作

node_t* link_modify(node_t* head,unsigned long int data1,unsigned long int data2)
{
    node_t* temp;
    temp = link_query(head,data1);
    temp->data = data2;
    return head;
}

四 、查找一个节点
第一步,声明一个临时指针指向头结点
第二步,通过循环来查找,如果当前节点不等于用户需要查找到的值,则指针往下一个进行查找,如果一直查找到最后一个节点都没有找到,则输出打印信息,提示当前链表内没有用户查找的数据

node_t* link_query(node_t* head,unsigned long int data)
{
    node_t* temp = head;
    while(temp->data != data)
    {
        temp = temp->next;
        if(temp->next == NULL)
        {
            printf("not find your data!");
        }
    }
    return temp;
}

五、显示当前链表
第一步,声明一个临时指针,并将头结点赋值给临时变量
第二步,判断临时指针的下一个节点是否为空,如果不为空,则通过循环打印每个节点的值
第三步,如果为空,则直接输出当前指针的值

void link_display(node_t* head)
{
    node_t* temp = head;
    while (temp->next != NULL)
    {
        printf("%ld\n",temp->data);
        temp = temp->next;
    }
    printf("%ld\n",temp->data);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ant5985

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值