链表的实现(c语言描述)

链表的概念(单链表)

1.链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
在这里插入图片描述

链表与数组

  1. 链表与数组的区别
  • 数组静态分配内存,链表动态分配内存。
  • 数组在内存中是连续的,链表是不连续的。
  • 数组利用下标定位,链表通过遍历定位元素。
  • 数组插入和删除需要移动其他元素,链表的插入或删除不需要移动其他元素。
  1. 数组的优缺点
  • 随机访问性比较强,可以通过下标进行快速定位。
  • 查找速度快
  • 插入和删除的效率低,需要移动其他元素。
  • 会造成内存的浪费,因为内存是连续的,所以在申请数组的时候就必须规定内存的大小,如果不合适,就会造成内存的浪费。
  • 内存空间要求高,创建一个数组,必须要有足够的连续内存空间。
  • 数组的大小是固定的,在创建数组的时候就已经规定好,不能动态拓展。
  1. 链表的优缺点
  • 插入和删除的效率高,只需要改变指针的指向就可以进行插入和删除。
  • 内存利用率高,不会浪费内存,可以使用内存中细小的不连续的空间,只有在需要的时候才去创建空间。大小不固定,拓展很灵活。
  • 查找的效率低,因为链表是从第一个节点向后遍历查找。

链表的增删改查

定义链表结构体

struct test
{
   
	int data;//存放的数据
	struct test *next;//指向自己本身的指针
};
  1. 增加元素
  • 指定元素前插入元素
struct test* insertFromFront(struct test *head,int data,struct test *new)
{
   
        struct test *p = head;

        if(p->data == data){
   
                new->next = head;
                return new;
        }

        while(p->next !=NULL){
   

                if(p->next->data == data){
   
                new->next =p->next;
                p->next = new;

                return head;
                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值