码迷,mamicode.com
首页 > 其他好文 > 详细

链表存储

时间:2019-08-11 00:36:22      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:def   malloc   插入   运算   长度   ext   http   null   头结点   

链表存储分为:单链表 、 双链表

单链表:带头结点、不带头结点

一个节结点包含两部分:值域和指针域指针指向后继结点 用于保存逻辑关系           

尾结点可以指向头结点(循环单链表)或者设置为NULL(非循环单链表) 头结点值域通常不包含任何东西

 

单链表结点类型如下:

typedef struct node{

    ElemType data;

   struct node *next;

} SLinks;

 

这里不可以将struct nide *next 改为  struct node next;因为SLinks声明是递归的,C++不允许类型递归声明,这样无法分配内存大小 ,如果是指针,其大小是确定的指针保存的是结点地址

*next = (SLinks *)malloc(sizeof(SLinks));malloc函数返回内存地址 再次将其转换为 SLinks *类型 这是动态分配的内存需要使用free函数释放内存

技术图片

 

 扩展知识

int a=10;
int p=a;
这种情况,p与a是不同的变量,这里是将a的值赋给p
int &p=a;
即 p是a 的别名,p和a其实是同一个整形变量,两个占用同一块内存空间,如果有 p=15;那么a也是15,修改p与修改a是完全等价的

那么
int *a;
int * &p=a;
很容易理解,把 int * 看成一个类型,a就是一个整型指针,p 是a的别名

解引用

  大家都知道在写int *p 时,*可以声明一个指针。很少人知道*在C/C++中还有一个名字就是“解引用”。他的意思就是解释引用,说的通俗一点就是,直接去寻找指针所指的地址里面的内容

 

基本算法:

初始化链表、销毁链表、求链表长度、求链表中第i个元素、按值查找元素位置、插入元素运算算法、删除元素、输出链表全部元素

 

链表存储

标签:def   malloc   插入   运算   长度   ext   http   null   头结点   

原文地址:https://www.cnblogs.com/webcyh/p/11333510.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!