当前位置: 代码迷 >> C语言 >> [求助]问个结构体的问题
  详细解决方案

[求助]问个结构体的问题

热度:328   发布时间:2007-10-22 17:25:49.0
[求助]问个结构体的问题

看一本讲数据结构的书上说到:
设单链表结点的定义为
typedef struct node
{
int data;
struct node *link;
}NODE,*LinkList;
然后紧接着说单链表查找函数
LinkList Find_List(LinkList L,int k)
{
LinkList p;int i;
i=1;p=L->link;
while(p&&k>i)
{
p=p->link;i++;
}
if(p&&i==k) return p;
return NULL;
}

红的地方是什么意思?初始化指针不应该是 LinkList=&node 吗?
还有就是C语言我看的是潭浩强的书,书上定义结构体没有 typedef,直接就是 struct node{ },那么加上 typedef 是什么意思?


[此贴子已经被作者于2007-10-22 17:26:14编辑过]

搜索更多相关的解决方案: 结构体  

----------------解决方案--------------------------------------------------------
LinkList 相当于 struct node*
typedef 是自定义类型 如typedef int INT; 然后,INT i;相当于int i;

----------------解决方案--------------------------------------------------------
那 typedef struct node 是什么意思,和 struct node 有什么区别
----------------解决方案--------------------------------------------------------

怎么没人回答?是不是我说的不清楚,还是这个问题太简单了


----------------解决方案--------------------------------------------------------
typedef struct node 不是一个变量
typedef struct node
{
int data;
struct node *link;
}NODE,*LinkList;
typedef 是把后面的这种类型,重新取一个名字叫NODE,和*LinkList;
其中*LinkList是struct node *型的.....

typedef 就像给别人取一个别名一样,以后只要叫别人,就相当于在叫本人...
----------------解决方案--------------------------------------------------------
typedef struct node
{
int data;
struct node *link;
}
NODE,*LinkList;


这个地方是用typedef声明NODE和*LinkList来代替结构体的声明(就是上面黄色字体的部分)!
举个例子 :
struct node
{
int data;
struct node *link;
}NODE,*LinkList;
在这里NODE和*LinkList是变量名。


而在
typedef struct node
{
int data;
struct node *link;
}NODE,*LinkList;
这里NODE和*LinkList是结构体名,可以用来声明此类型的结构体变量

----------------解决方案--------------------------------------------------------

哦,差不多懂了。
你的意思是取了两个别名 NODE 和 *LinkList, 还是取了一个别名 NODE 再定义了一个 struct node 指针类型

[此贴子已经被作者于2007-10-22 20:57:29编辑过]


----------------解决方案--------------------------------------------------------
哦,我懂了,一个是结构体的别名,一个是结构体指针的别名。
----------------解决方案--------------------------------------------------------
  相关解决方案