C的链表-简单介绍
来源:互联网 发布:linux百度翻译 编辑:程序博客网 时间:2024/06/11 18:33
C的链表-简单介绍
相关知识: 结构体, 指针, malloc申请内存函数
链表的出现
在存储数据时, 当数目确定时, 我们可以通过数组或者结构体数组来存储数据.
当数目不确定时, 可以把数据的长度定义为一个很大的数目, 从而保证有足够的空间存储数据.
但这种做法会造成空间的浪费, 总会有一部分的空间没被用到.
因为数组的长度必须是事先确定下的常量, 不能为变量, 所以数组已经无法满足我们的需求了.
于是出现了长度可变的链表, 要多少, 拿多少.链表的介绍
链表可以想象为环式手链, 每一个环都连着下一个环
链表也是这样, 我们把链表中的环叫做节点, 节点包括数据域与指针域
数据域存放数据
指针域存放下一个节点的地址(指针)
头节点: 链表中的第一个节点
其数据域一般不存储数据
其指针域存放第一个数据节点的地址
头指针: 头节点的地址
首节点: 第一个存放数据的节点
尾节点: 最后一个存放数据的节点, 其指针域应为NULL- 链表的实现
由于涉及多种基本的数据, 所以在C中, 我们用结构体+指针实现链表
示例代码:
#include <stdio.h>// 节点结构体typedef struct node{ // 数据域 int age; char sex; // 指针域 struct node * next;}Node;void main(){ int i = 0; // 头指针 struct node *head, *p; // 为头节点申请空间 head = (Node*)malloc( sizeof(Node) ); // 新建10个节点 for(i=0, p = head; i<=9; i++) { // 为节点申请空间 (*p).next = (Node*)malloc( sizeof(Node) ); // 更新暂时节点地址到下一个节点 p = (*p).next; } // 尾节点指针域为NULL (*p).next = NULL; // 遍历节点 for(p=(*head).next; p!=NULL; p=(*p).next) { .... }}
PS: 链表的操作有头/尾插节点, 遍历链表, 节点的数据交换
上面介绍的只是简单的单链表, 还有双向链表, 循环链表
阅读全文
0 0
- C的链表-简单介绍
- C的简单介绍
- Objective-C的简单介绍.
- C语言的简单介绍
- 链表的简单介绍
- C的指针变量的简单介绍
- c语言中指针的简单介绍
- C语言中枚举的简单介绍
- Object-c集合的简单介绍
- 【C++】placement new的简单介绍
- C main的反汇编简单介绍
- c语言中函数的简单介绍
- Object-c------NSArray的简单介绍
- Object-c------NSSet的简单介绍
- Object-c------NSDictionary的简单介绍
- Object-c------NSDate的简单介绍
- 4.6 C语言函数的简单介绍
- c语言-----数组的简单介绍
- Oracle数据的运算符-yellowcong
- c++ winpcap开发(10)
- 简单的单例模式
- 【每日一题-9】层序遍历与N!后的0的个数
- CodeForces
- C的链表-简单介绍
- 冒泡排序和二分法
- 关于凸包——Graham扫描法
- session,application,out
- Basic Structure 基本结构:
- hdu 5723 Abandoned country
- Modular Inverse 【欧几里得求 最小逆元】
- 常见报错
- 图片的放大和缩小