数据结构基础(2)---链表基础概念


链表的优缺点:

                优点:

                    空间没有限制

                    插入删除元素很快

                缺点:

                    存取速度很慢。


定义:

            n个节点离散分配(在内存中不是连续存储)

            彼此通过指针相连

            每个节点只有一个前驱节点,每个节点只有一个后续节点

            首节点没有前驱节点,尾节点没有后续节点。

                    首节点:

                            第一个有效节点

                    尾节点:

                            最后一个有效节点

                    头节点:

                            头结点的数据类型和首节点的类型一样

                            没有存放有效数据,最最前面的,是在

                            首节点之前的,主要是为了方便对链表

                            的操作。

                    头指针:(指向头)

                            指向头节点的指针变量

                    尾指针:

                            指向尾节点的指针

                           

(头结点有可能很大,占的内存可能大,假设我想造一个函数

输出所有链表的值,那你如果不用头指针类型做形参,那由于

不同链表的头节点不一样大小,这样就没办法找出形参)

 **确定一个链表需要几个参数:(或者说如果期望一个函数对链表进行操作

                            我们至少需要接收链表的那些信息???)

            只需要一个参数:头指针,因为通过它我们可以推出

            链表的所有信息。

(链表的程序最好一定要自己敲出来)

 

 

链表的分类:单链表

                        双链表:

                             每一个节点有两个指针域

           

                      循环链表

                            能通过任何一个节点找到其他所有的节点

       

 

 

单链表伪算法:1.插入节点:

在p指向的节点后面插入一个被q指向的节点:

 

P存放的是指向的节点的地址,q也是。next指针存放的是下一个元素的地址。

 

q->next=p->next;p->next=q;

也可以

r=p->next; p->next=q;q->next=r;

 

删除p后面的节点

 

P->next=p->next->next 会造成内存泄露,无法找到要删除的节点,无法释放内存。

正确做法:临时定义一个指针r 存放要删除节点的地址

r=p->next;

p->next=p->next->next;

free(r);//释放所指节点占用的内存


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值