用C语言实现线性表的链式存储

最近学完数据结构线性表链式存储,老师让我们用C语言去实现。但课本上用的是C++的引用参数,只能提供大致的参考,在C中只能用指针去实现引用的功能。虽然指针更加灵活,但是指针太难啦,总是报错。总算在多次反反复复的bug后勉强实现了功能。

这个是对节点和链表的定义

对链表初始化,链表还附带了头节点,便于查找和删除

这个是链表的插入,实现的是将元素插入第i个位置之前

就是这个地方,改了好久,课本上是LinkList& L,感觉要用指针(PS:因为涉及到对它的改动),但又不知道用指针能不能改成功,就是把指针和形参等搞混了,后来也是慢慢理出来了,最后才发现真正需要的就最后一行改长度,其他的都靠L的head指针

这个是删除,将第i个元素删除

搞明白上面的插入这个就简单多了

这个是返回第i个元素的地址(PS:开始的时候也不知道能不能行,都是试出来的,因为很少写返回地址的函数)

最后再说一下我发现的一个很奇怪的地方

测试代码的时候

这样可以正常运行

但是如果在GetElem()函数前加一句printf语句就会报错

引发了异常: 读取访问权限冲突。

**ptr** 是 0xFFFFFFFFFFFFFFFF。

Debug的时候发现

经过printf函数后指针的值直接变了,才导致后面的访问错误(PS:不知道是为什么)

写这些就是为了记录一下这次经历,这次确实加深了对指针的理解,大家有知道的也可以解答一下小萌新的疑问,感谢各位大佬

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值