
C语言链表操作
我看到一些链表的定义,有些困惑:有些链表的struct是这样的:typedefstructLNode{ElemTypedata;structLNode*next;}LNo...
我看到一些链表的定义,有些困惑:
有些链表的struct是这样的:typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
有些却是这样的: struct LNode{
ElemType data;
struct LNode *next;
};
我的问题是:第一种方法有没有typedef有区别吗?
第一种方法的LinkList是不是完全等效于 LNode *呢?也就是出现LinkList的地方可以用LNode*代替?
第一种方法比之第二种方法优势在哪?是不是体现在第二个问题上? 展开
有些链表的struct是这样的:typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
有些却是这样的: struct LNode{
ElemType data;
struct LNode *next;
};
我的问题是:第一种方法有没有typedef有区别吗?
第一种方法的LinkList是不是完全等效于 LNode *呢?也就是出现LinkList的地方可以用LNode*代替?
第一种方法比之第二种方法优势在哪?是不是体现在第二个问题上? 展开
2个回答
展开全部
首先,关键字typedef其实就是type define的缩写,这你应该明白它的意思了吧。
它的作用是:给已有的数据类型取一个名字。例如typedef int ElemType;那么ElemType定义一个变量就相当于int 定义一个变量。
所以
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
的意思是把结构体struct LNode取一个名字叫LNode,再给struct LNode *取一个名字叫LinkList
在程序中用LNode定义变量时就相当于用struct LNode定义的,用LinkList定义的变量就相当于用struct LNode *定义的。
这样做的好处是:1、如果需要对程序中的数据类型做修改,比如想把int 换成char,则只需要在程序头对typedef定义的数据类型做修改就行了;2、可以简化数据类型名的书写,例如上面的结构体,如果想定义一个结构体指针,只需要用LinkList定义就行了。
它的作用是:给已有的数据类型取一个名字。例如typedef int ElemType;那么ElemType定义一个变量就相当于int 定义一个变量。
所以
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
的意思是把结构体struct LNode取一个名字叫LNode,再给struct LNode *取一个名字叫LinkList
在程序中用LNode定义变量时就相当于用struct LNode定义的,用LinkList定义的变量就相当于用struct LNode *定义的。
这样做的好处是:1、如果需要对程序中的数据类型做修改,比如想把int 换成char,则只需要在程序头对typedef定义的数据类型做修改就行了;2、可以简化数据类型名的书写,例如上面的结构体,如果想定义一个结构体指针,只需要用LinkList定义就行了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询