博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(9)链表
阅读量:7226 次
发布时间:2019-06-29

本文共 1407 字,大约阅读时间需要 4 分钟。

我们至少可以通过两种结构来存储数据

数组

1.需要一整块连续的存储空间,内存中可能没有

2.插入元素,删除元素效率极低。

3.查找数据快

链表

1.查找效率低

2.不需要一块连续的内存空间

3.插入删除元素效率高

计算机术语

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

头结点:

数据类型和首节点的数据类型一模一样

头结点是首节点前面的那个节点

头结点并不存放有效数据

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

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

尾节点:

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

尾节点的指针域是空的(null)

头指针---->头结点---->(首节点----->链表------>尾节点)  ()内是有效数据

只需要知道头指针就能确定一个链表(尾节点指针域是null)

2012年2月6日7:30:48# include 
# include
# include
struct Node{ int data; struct Node * pNext;};struct Node * create_list();void traverseList(struct Node *);int main(void){ struct Node * pHead = NULL; //定义头指针 pHead = create_list(); //构造链表,返回头结点地址 traverseList(pHead); //输出链表 return 0;}struct Node * create_list(void){ int len; int i; int val; //创建一个头结点 struct Node * pHead = (struct Node *)malloc(sizeof(struct Node)); if(NULL == pHead){ printf("分配失败,程序终止!\n"); exit(-1); } struct Node * pTail = pHead; //将头结点的地址给指针变量pTail使pTail指向头结点 pTail->pNext = NULL; //头结点的结构体元素(下一个节点地址)赋值 printf("请输入你要创建链表的节点个数:len = "); scanf("%d", &len); for(i=0; i
data = val; //新节点赋值 pTail->pNext = pNew; //pNew指向的地址给头结点的变量 pNew->pNext = NULL; //新节点地址变量给空值 pTail = pNew; //重新使pTai 替换 pNew进行下一次分配创建 } return pHead;}void traverseList(struct Node * pHead){ struct Node * p = pHead->pNext; while(NULL != p){ printf("%d\n", p->data); p = p->pNext; } return;}

转载于:https://www.cnblogs.com/lanzhi/p/6469050.html

你可能感兴趣的文章
享用甜点时要不要来杯咖啡?Java 与树莓派 (Raspberry PI)
查看>>
精通Oracle 10g Pl/SQL编程
查看>>
邱怡轩:R中大规模矩阵的SVD与矩阵补全
查看>>
C++ Primer习题集(第5版)
查看>>
centos7 mysql 5.7 yum安装
查看>>
JSOUP简单应用
查看>>
Mysql,SqlServer,Oracle主键自动增长的设置
查看>>
开源 java CMS - FreeCMS2.3会员登录
查看>>
malloc(0)的返回值
查看>>
析构方法、克隆对象
查看>>
Python字符编码详解
查看>>
Android开发 Firebase动态链接打开APP
查看>>
基于 HTML5 Canvas 的 3D 模型贴图问题
查看>>
让技术不要成为“背锅侠”!
查看>>
dubbo源码分析系列——dubbo的SPI机制源码分析
查看>>
表格单元格td设置宽度无效的解决办法
查看>>
防止视频资源被下载
查看>>
都是并发惹的祸
查看>>
eclipse实现JavaWeb项目 增量打包
查看>>
面试题系列一之 程序生命周期
查看>>