typedef struct LNode { Elemtype data; struct LNode *next; }LNode , *LinkList; 为什么要typedef

*LinkList是什么意思

第1个回答  2012-10-27
*LinkList 表示 LinkList是一个 struct LNode *的类型别名,也就是
LinkList 与 struct LNode * 是等价的,在程序中,这两个串是可以互换的。

typedef是类型重定义符,这里是因为C语言使用结构体时都要加上struct作为前缀,如:
struct LNode *p,*q; //定义p,q两个结构体指针
如果typedef把 struct LNode *重新定义为LinkList后,就可以这样简单地写了:
LinkList p,q; //定义两个结构体指针p,q
两者作用相同,但是后者更加清晰和容易明白。
第2个回答  2012-10-26
typedef 是类型定义,将结构体的名字定义成LNode,其实意思就是
typedef struct LNode LNode;
typddef struct LNode* LinkList;

LNode tLNode; // 是结构体变量
LinkList p; // 是结构体指针追问

typedef struct LNode 这句就是把机构体定义为LNode?机构体不是struct student 才算是一个结构体类型?

追答

typedef就是类型定义啊,将该结构体定义成另外一个名字
typedef struct LNode LNode;

第3个回答  2012-10-26
typedef 只是给数据类型一个简写或者叫别名,便于编码时方便使用,也就相当于给人取个外号。
如果不用typedef的话, 你每次用这个结构定义变量的时候,就要协商一堆的struct..., 如果用typedef的话,就可以直接用LNode定义变量了。追问

那个typedef struct LNode LNode 才是把LNode定义为结构体呀,为什么typedef struct LNode 就把 LNode 定义为结构体了呢

追答

这里其实是2步动作,第一步,struct{....}会被编译器认为是一个结构数据类型,第二步,typedef吧这个数据类型取了个别名LNode。

要知道struct的标准写法应该是struct {};所以到“}”的时候,结构的数据类型定义已经完成了。

第4个回答  2020-02-25
将自定义的结构体定义成两种类型,一种是结构体自己,一种是结构体指针类型,逗号隔开只是语法要求

typedef struct LNode { ElemType data; struct LNode *next; } L...
首先typedef是类型定义,就是type define ;结构体中ElemType data 是数据域,struct LNode *next是指针域,就是next这个指针指向的结构体类型的结点。外面的LNode是结构体变量,即结点类型,也是为结构体赋予的新名字。*LinkList是结构体指针,即链表。

typedef struct LNode { ElemType data; struct LNode *next; }LN...
将自定义的结构体定义成两种类型,一种是结构体自己,一种是结构体指针类型,逗号隔开只是语法要求

...typedef struct LNode{ ElemType data; struct LNode *next; }LN...
void reverse(LNode *L){ LNode *p=NULL, *n, *pre;pre = L->next;if (pre != NULL){ p = pre->next;pre->next = NULL;} while (p != NULL){ n = p->next;p->next = pre;pre = p;p = n;} if (pre != NULL){ L->next = pre;} } ...

c语言结构指针问题
typedef struct Lnode{ int data;struct Lnode *next;}LNode, *LinkList;定义结构 struct Lnode 为 LNode 类型 定义结构指针 struct Lnode* 为 LinkList 类型。声明:struct Lnode N;struct Lnode* L;就可以写成:LNode N; \/\/ 相当 struct Lnode N;LinkList L; \/\/ 相当struct L...

建立单链表,在单链表的第i个元素前插入x
typedef char Elemtype;\/\/链表元素类型 typedef struct lnode { Elemtype data;struct lnode *next;}lnode,*linklist;\/\/链表节点类型和节点指针类型 void createlist(linklist &L)\/\/创建链表,L为表头 { L=(linklist)malloc(sizeof(lnode));L->data='#'; L->next=NULL;linklist q=L;...

数据结构——声明定义单链表节点类型
lnode 是节点指针,用于单链表的链接操作(指向下一个节点),linklist是定义的结构体的名称,用于表示整个链表(其中包含两个方面,数据域和指针域,当链表中只有一个节点时,指的就是整个节点)typedef struct LNode{ElemTYpe data;struct LNOde *next; }LINklist,*Lnode;这里的*lnode和linklist 是...

C++ 设计一个函数,实现一个单向链表的逆置,编写完整的程序
typedef int ElemType;typedef struct LNode { ElemType data;struct LNode *next;}LNode;typedef LNode *LinkList;\/\/ LinkList CreateList()\/\/头插入法 建立带头节点的链表 { LinkList L;LinkList P;int x;L=(LinkList)malloc(sizeof(LNode));L->next=NULL;\/\/建立空链表 printf("请输入...

left of '.data' must have class\/struct\/union type
left of '.data' must have class\/struct\/union type 编译c++程序时老有这个信息,是怎么回事啊??这是程序的一段代码:typedefstructLnode{elemtypedata;structLnode*next;}Lnode,*linklist,*link,*position;intlocateelem(linklist&l,... 编译c++程序时老有这个信息,是怎么回事啊??这是程序的一段代码:...

用C语言实现数据结构中常用算法,如对链表的操作、查找、排序等。_百...
没什么大的毛病 include <stdio.h> include <stdlib.h> include <iostream> typedef int ElemType;typedef struct LNode { ElemType date;struct LNode *next;}linklist,*link;\/*构造链表*\/\/\/ void IinitList(link &L){ if(L)delete L;L= (link)malloc(sizeof(LNode)) ;if (!L) exit(...

...struct LNode {ElemType data; LNode *next;}; 这里struct LNode怎...
struct LNode就是定义一个结构体的意思,结构体就是一种数据存储单元,里面可以自由设定可以存储的内容形式,如int型,char型等等。这段代码应该是关于一个链表,链表的每个单元都是结构体。LNode *next就是构造了一个结构体指针,这个指针可以指向这种结构体,即LNode类型的结构体,指针是指向数据存放...

相似回答