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*代替?
第一种方法比之第二种方法优势在哪?是不是体现在第二个问题上?
展开
 我来答
半季流年
2010-12-16 · TA获得超过1533个赞
知道小有建树答主
回答量:616
采纳率:0%
帮助的人:785万
展开全部
首先,关键字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定义就行了。
dongmeng4543
2010-12-16 · 超过22用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:0
展开全部
优势确实体现在第二个问题上,但是两者不能完全代替。

比如const LinkList LNode中,const修饰的其实是LNode指针,而不是其指向的对象。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式