数据结构之链表学习笔记
来源:互联网 发布:淘宝图片主图尺寸 编辑:程序博客网 时间:2024/05/16 19:53
数据结构之链表学习笔记
结构体定义
typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;
- typedef是重新将现有的类型定义一个新的类型名(别名)。
- LNode是给这个结构起的一个名字,可以用LNode去定义变量,在这里已经和int/char这样的关键字一样了。
- *LinkList是指向这个结构的一个指针,也可以去定义变量,定义出来的是指向这个结构的指针变量
- LinkList L; L就是这个结构体类型的指针,类似 int * a; 里的a.
它相当于分开写的
struct LNode { int data; struct LNode *next; };typedef struct LNode *LinkList;
*LinkList是代替struct LNode的类型了。
创建链表
void CreateList_L(LinkList &L,int n){ L = (LinkList)malloc(sizeof(LNode)); //新建一段8字节的空间,把空间的地址强制转换为LNode*类型并赋给L,设为18ff40//---------------------------------------------------------------- L->next=NULL; //打印链表是时判断是否到了尾部 //那个8字节空间的next值是NULL,即18ff40这个结点的next=NULL//----------------------------------------------------------------LinkList p = L; //把L的值赋给p,p=18ff40//---------------------------------------------------------------- LinkList p = L = (LinkList)malloc(sizeof(LNode));//实际上前两行也可以写成这一行,p的值为18ff40//---------------------------------------------------------------- for(int i=0;i<n;i++) { LinkList q = (LinkList)malloc(sizeof(LNode));//新建一段大小为8字节的空间,把空间的地址赋给q,设为541f20 cin>>q->data; p->next=q;//p是一个指针,它现在所指的是上一个创建的结点,p->next是上一个结点的next,第一次是:18ff40这个结点的next为541f20 p=q;//把当前结点的地址赋给p,p指向当前结点.p的值18ff40变为541f20 p->next=NULL;//当前结点的next为NULL.541f20的next为NULL }}
void CreateList_L(LinkList &L,int n)//相当于:void CreateList_L(LNode * &L,int n)
关于L
- L是一个指针,sizeof(L)==4,(大小为4),
L = (LinkList)malloc(sizeof(LNode)); printf("%x\n",L); //和下面的值不一样 printf("%x\n",&L);
关于new
- new的返回值是指针,理解成地址.
- malloc 函数返回的是 void * 类型
创建链表终极版
void CreateList_L(LinkList &L,int n){ LinkList p = L = (LinkList)malloc(sizeof(LNode)); L->next=NULL; for(int i=0;i<n;i++) { LinkList q = (LinkList)malloc(sizeof(LNode)); cin>>q->data; p->next=q; p=q; p->next=NULL; //打印链表是时判断是否到了尾部 }}
打印链表
void print(LinkList L)//不引用,不影响头指针{ LinkList p = L->next;//L是头指针,指向的是头结点,头结点->data不赋值,所以p的值是头结点的next,即第一个结点的地址 int i; while (p != NULL) { cout<<p->data<<" "; p = p->next; } cout<<endl;}
这几行代码搞了我两天,当初学C语言是学的挺好的啊,但这次又学会了不少东西^_^.
0 0
- 数据结构之链表学习笔记
- 数据结构之链表学习笔记
- 数据结构学习笔记之链表
- 《算法导论》学习笔记之Chapter10---数据结构之链表
- 数据结构学习笔记(3.线性表之循环链表)
- 数据结构学习笔记(4.线性表之双向链表)
- 数据结构学习笔记(4.线性表之双向链表)
- 数据结构学习笔记之链表(C语言版)
- 学习笔记------数据结构(C语言版)数组之十字链表
- 数据结构学习笔记之用Java实现双向链表
- 数据结构学习笔记之表、栈、队列
- 数据结构之顺序表学习笔记
- 数据结构学习笔记之线性表
- 数据结构学习笔记之顺序表
- 数据结构学习笔记之线性表
- 数据结构学习笔记之线性表
- 数据结构与算法学习笔记之--数据结构
- 数据结构学习笔记之堆栈
- 方式的方式的是的方法快速的方式打开
- 福克斯疯狂拉升的发送卡夫卡
- VS各种工程文件说明
- Fragment的setUserVisibleHint方法实现懒加载
- 放到什么方式的方式的了福克斯地方克里斯蒂浪费
- 数据结构之链表学习笔记
- 基于阿里云的WordPress博客搭建
- jquery中attr方法和val方法的区别
- 分手的分开了是的风雷速递
- ListView嵌套GridView显示不全解决方法
- java 中处理多线程的
- redis3.0.0 集群安装详细步骤
- NODEJS和飞秋通讯,RSA、blowfish消息加密解密
- 30分钟LINQ教程