C语言学习(五)链表的格式与操作示例

  链表是为克服数组的缺点,在内存空间中离散存储,但需要一个指针记住下一个结点的地址,以便可以将链表结点连接起来。

    链表与数组的比较:

  数组

                  优点:存取速度快。

                  缺点:插入和删除元素的效率很低;

                                需要一块连续的内存空间。

         链表

                  专业术语

                           首节点

                                    存放第一个有效数据的节点

                           尾节点

                                    存放最后一个有效数据的节点

                           头结点

                                    头结点的数据类型和首节点的类型是一样的(结构体变量类型)

                                    头结点是首节点前面的那个节点,头结点并不存放有效数据,

                                    设置头结点的目的是为了方便对链表的操作。

                           头指针

                                    存放头结点地址的指针变量

                           优点:插入删除元素效率高;

                                        不需要一块连续的很大的内存空间。

                           缺点:查找某个位置的元素效率低。

 

                  定义

                             链表的基本单元是节点,节点分为两部分:数据域和指针域,数据域用来存放有效数据,指针域存

                             放下一个节点的地址。所以链表的节点都是结构体变类型。

                             用创建链表时,链表必须为动态创建,以便其它函数对其进行操作。

                             要确定一个链表,只需链表的头指针即可,即函数参数只需一个。

 

链表的实现:

[cpp] view plain copy

  1. # include <stdio.h>  
  2. # include <malloc.h>  
  3. # include <stdlib.h>  
  4.   
  5. struct Node //通过结构体定义节点  
  6. {  
  7.     int data; //创建数据域  
  8.     struct Node * pNext; //创建指针域  
  9. };  
  10.   
  11. //函数声明  
  12. struct Node * CreateList(void);  
  13. void TraverseList(struct Node *);  
  14. bool isEmpty(struct Node *);  
  15.   
  16. int main(void)  
  17. {  
  18.     struct Node * pHead; //创建头指针,用来存放头结点的地址。  
  19.   
  20.     pHead = CreateList(); //CreateList()函数动态创建链表并返回头结点的地址。  
  21.     printf("\n");  
  22.     TraverseList(pHead); //函数参数只需头指针即可确定一个链表。  
  23.   
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值