线性表的注意点(一)

经常我们会遇到以下代码

typedef struct node { 

     int ;

      PNode next;

}  PNode,*Linklist;

这样可能看不懂让我们来慢慢简化。

typedef  struct node {
    int  data ;

    struct node * next;

} PNode,*LinkList;

再来

struct node { 

    int data; 

    struct node *next;

};
typedef struct node PNode;

typedef struct node *Linklist;

到这里想必大家都一目了然了,下面在说说个误区

struct node { 

    int data; 

    struct node *next;

} PNode;

对比

typedef  struct node {

    int  data ;

    struct node * next;

} PNode;

这两处的PNode分别是什么呢?
下面我这样写你估计就明白了

struct node { int data; struct node *next ;}   PNode;   //  等同于 struct node PNode;

typedef  struct node {int  data ;struct node * next;}   PNode;     //   等同于  typedef struct node PNode;

这里想必大家都明白了

struct node { 

    int data; 

    struct node *next;

} PNode;

// 这里面node是一个标记,而PNode是一个结构体变量


typedef  struct node {

    int  data ;

    struct node * next;

} PNode;

// 这里面node是一个标记,而PNode等同于 struct node

// 我们定义结构体变量的时候是用 strcut node 变量名;所以可以用 PNode 变量名;

// 当然结构体可以省略标记如:

struct   { 

    int data; 

    struct node *next;

} PNode;

// 但是我们要给他个结构体变量名,不然就无法申明结构体变量了,这里以后只能用PNode这个结构体变量了,因为我们无法再声明别的结构体变量(缺乏标记)

// 但是我们依然可以用typedef来定义这样我们就解决了不能再次声明结构体变量的烦恼了

typedef  struct  {

    int  data ;

    struct node * next;

} PNode;

// 这里可以用PNode尽情的声明了。

你可能感兴趣的:(线性表的注意点(一))