链表的定义以及结构体,指针相关小结

严蔚敏版的数据结构里面关于单链表的存储结构定义如下

typedef struct LNode{
    ElemType data;
    struct LNode *next;
}LNode,*LinkList;

《数据结构与算法分析》中关于单链表的存储结构定义如下

struct Node;
typedef struct Node *PtrToNode;
typedef PtrToNode List;
typedef PtrToNode Position;
struct Node{
    ElemType Element;
    Position Next;
};

显而易见下面这个定义太复杂了,而且现在也很少将typedef这样,因为如果变量太多了,这真的太容易混乱了。

要想理解这两个定义。首先我们先来学习下指针的基础知识。

指针:指针是一个其数值为地址的变量。

地址运算符&:&nurse表示变量nurse的地址。

间接运算符*:当后跟一个指针名或地址时, * 给出存储在被指向地址中的数值。例如val = *ptr;//将ptr指向的值赋给val(ptr是一个地址)

再给两个例子方便理解指针

int *pi;//pi是指向一个整数变量的指针

char *pc;//pc是指向一个字符型变量的指针

类型标识符表明了被指向变量的类型,而 * 表明该变量为一个指针。

有了这些指针的基础知识后,我们现在可以知道*LinkList的意思是LinkList是指向链表结点LNode的指针,LinkList L则表示L是单链表的头。

然后我们来复习一下结构体的基本知识

struct book{
    float value;
};
struct book library;

struct book{
    float value;
}library;//在定义后跟变量名
这两个效果是一样的,作用是把library声明为一个使用book结构设计的结构变量
另外结构体是可以嵌套的,所以我们在严书中看到struct LNode *next;

最后我们来看一下typedef的用法。

typedef通俗来说就是给紧跟其后的类型起个别名,就跟#define类似的作用

typedef struct Node *PtrToNode;

的意思就是*PtrToNode就是Node,所以PtrToNode就是指向Node的指针,所以

typedef PtrToNode Position;
就是和
struct LNode *next;
一样的作用。

综上就是我对链表结构体的定义的理解。后面的栈和队列都可以这样理解。最主要的一点,严书比《数据结构与算法分析》真的清楚多了。

  • 21
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值