数据结构之链表学习笔记
2015-04-02 11:47
357 查看
数据结构之链表学习笔记
结构体定义
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语言是学的挺好的啊,但这次又学会了不少东西^_^.
相关文章推荐
- 【学习笔记】数据结构与算法基础学习:链表
- 慕课网学习笔记之数据结构一单链表(C++)
- [原创]数据结构学习笔记之一:链表
- 数据结构学习笔记——其它链表
- 数据结构 学习笔记之:静态链表--史上最简单的C语言实现——只为掌握概念——不清楚静态链表的鸟鸟们有福了!
- 数据结构——链表学习笔记
- 【数据结构】单链表学习笔记
- 数据结构与算法学习笔记之写链表代码的正确姿势(下)
- 【算法学习笔记】07.数据结构基础 链表 初步练习
- 【数据结构与算法学习笔记】PART3 线性结构(除向量外,数组、栈、队列、链表)
- 数据结构与算法学习笔记之写链表代码的正确姿势(下)
- 【学习笔记----数据结构04-单循环链表】
- 数据结构之链表学习笔记
- 【算法学习笔记】07.数据结构基础 链表 初步练习
- 数据结构与算法学习笔记——链表部分实现(数组形式)
- 学习笔记:数据结构(三)内核链表
- opencv学习笔记[9]:Opencv的基本数据类型和矩阵结构
- 【学习点滴-数据结构-单链表】交换单链表中任意两个元素
- [数据结构算法学习] 单向链表
- 数据结构 学习笔记之:顺序栈的C语言实现