单链表的基本操作

目录

1 链表的引入

2 链表的动态遍历

3 遍历链表中的p = p - next

4 统计链表的个数

5 查找指定的节点

6 从指定节点后方插入新节点

7   从指定节点前方插入新节点


1 链表的引入

     链表的每个节点由数据域指针域构成。数据域存放数据元素信息,指针域存放后继节点的地址。最后一个节点是没有后继节点,因此其指针域一般设置为NULL。

 链表与数组的区别?

     数组是线性存储结构,在内存地址是连续的,增加一个数组元素和删除一个数组元素都是非常不方便;而链表是链式存储结构,在内存空间中地址不一定是连续的,因为地址不连续所以插入一个节点或者删除一个节点都是非常方便,可以看出链表比较灵活。

如何使用链表存放三个整数1,2,3 ?

#include<stdio.h>
struct Test{

    int data;
    struct Test *next;
};

int main(void)
{
   /*申明了三个节点,存放数据1,2,3;但是这三个
     节点之间并没有联系,因为他们的指针域并没有存放
     后继节点的地址*/

   struct Test t1 = {1, NULL}; 
   struct Test t2 = {2, NULL};
   struct Test t3 = {3, NULL};

   /*让指针存放后继节点的地址*/
   t1.next = &t2;
   t2.next = &t3;
 
   /*现在通过变量t1就可以访问到t2,t3里面的数据*/
   printf("t1 = %d\nt2 = %d\nt3 = %d\n",t1.data,t1.next->data,t1.next->next->data);



   return 0;
}

2 链表的动态遍历

     链表的最后一个节点是没有后继节点;因此可以通过判断当前节点的指针是否为NULL来遍历循环链表。


struct Test *print_link(struct Test *head)
{
     struct Test *temp = head;
     while(temp)//因为最后一个节点是没有后继节点的,所以可以通过判断后继节点是否为NULL来遍历链表
     {
         printf("%d\n",temp->data);
         temp = temp->next; //让temp指向后继节点
     }

}

3 遍历链表中的p = p - next

4 统计链表的个数

     在动态遍历链表的时候,设置一个计算器变量i;通过i来统计链表的个数

int Get_link_nodeNum(struct Test *head)
{

      struct Test *temp = head;
      int i = 0;
    
      while(temp)
      {
           i++;
           temp = temp->next;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值