c语言学习笔记——链表
来源:互联网 发布:为什么程序员是青春饭 编辑:程序博客网 时间:2024/05/12 23:21
链表
算法:
1.通俗定义:
解题的方法和步骤
2.狭义定义:
对存储数据的操作
3.广义定义:
广义的算法也叫泛型
无论数据是如何存储的,对数据的操作都是一样的
我们至少可以通过两种结构来存储数据
数组
1.需要一整块连续的存储空间,内存中可能没有
2.插入元素,删除元素效率极低。
3.查找数据快
链表
1.查找效率低
2.不需要一块连续的内存空间
2.插入删除元素效率高
专业术语
头指针
存放头结点地址的指针变量
头结点
数据类型和首节点的数据类型一模一样
头结点是首节点前面的那个节点
头结点并不存放有效数据
设置头结点的目的是为了方便对链表操作
首节点
存放第一个有效数据的节点
尾节点
存放最后一个有效数据的节点
尾节点的指针域是空的(null)
头指针---->头结点---->(首节点----->链表------>尾节点) ()内是有效数据
算法:
1.通俗定义:
解题的方法和步骤
2.狭义定义:
对存储数据的操作
3.广义定义:
广义的算法也叫泛型
无论数据是如何存储的,对数据的操作都是一样的
我们至少可以通过两种结构来存储数据
数组
1.需要一整块连续的存储空间,内存中可能没有
2.插入元素,删除元素效率极低。
3.查找数据快
链表
1.查找效率低
2.不需要一块连续的内存空间
2.插入删除元素效率高
专业术语
头指针
存放头结点地址的指针变量
头结点
数据类型和首节点的数据类型一模一样
头结点是首节点前面的那个节点
头结点并不存放有效数据
设置头结点的目的是为了方便对链表操作
首节点
存放第一个有效数据的节点
尾节点
存放最后一个有效数据的节点
尾节点的指针域是空的(null)
头指针---->头结点---->(首节点----->链表------>尾节点) ()内是有效数据
只需要知道头指针就能确定一个链表(尾节点指针域是null)
# include <stdio.h># include <malloc.h># include <stdlib.h>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<len; i++){printf("请输入第%d个节点的值:", i+1);scanf("%d", &val);//给第 i+1 个节点分配内存空间struct Node * pNew = (struct Node *)malloc(sizeof(struct Node));if(NULL == pNew){printf("分配失败,程序终止!\n");exit(-1);}//内存分配成功后pNew->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;}
0 0
- c语言学习笔记——链表
- C语言学习笔记—链表1
- C语言学习笔记——C语言编程
- C语言学习笔记——C语言简介
- C语言学习笔记——指针
- C语言学习笔记1——
- C语言学习笔记——指针
- C语言学习笔记——文件
- C语言学习笔记——指针
- C语言表达式 ——学习笔记
- C语言学习笔记——前言
- C语言学习笔记——排序
- 数据结构—使用c语言学习笔记
- C语言结构体—学习笔记
- 学习笔记—C语言基础篇
- c语言学习笔记(13)——链表
- Linux C学习笔记——C语言基础
- C学习笔记——接触C语言
- JavaScript入门之验证输入,对代码进行拆行
- ListView添加删除FooterView java.lang.Class Cast Exception: android.widget.HeaderViewListAdapter
- 题意:给10^5个点的坐标,求出最小的两个点之间的距离
- html5本地存储
- 为什么很多人工作都不开心?
- c语言学习笔记——链表
- ie集成ocx事件
- 孙鑫VC++深入详解(2):mfc框架程序剖析
- CString与char * ,string 的相互转换
- 放逐之刃背景小故事
- json性能对比 fastjson jackson
- 开发Struts2应用依赖的jar文件
- 几种常见mat数据操作
- 搭建tftp服务