c++ 数据结构 小问题~~~

来源:百度知道 编辑:UC知道 时间:2024/04/30 05:14:44
如下的一段代码,请详细讲解下~~
这是数据结构书上实现单链表存储结构时候的一段代码

typedef struct LNode{//定义结构体
int data;
struct LNode *next;
}LNode,*LinkList;
“整个结构起了个别名叫LNode,还有(*整个结构)起了别名叫LinkLIst”------起别名是什么意思?为什么要起别名?这两个名字区别何在?

struct LNode{
int data;
struct LNode *next;
}

typedef LNode LNode;
typedef LNode * LinkList

以上是分解你的代码,这样应该好看一点。
定义结构体应该没问题
下面两句:第一句无所谓,第二句是把LNode *类型改成LinkList,只是改了个名字而已

改名字是为了好记、方便,统一,跟姓名学号的关系差不多。

#include<iostream.h>
typedef int * intp;//用intp代替int *

void main()
{
intp a=new int[2];
int *b=new int[2];
a[0]=b[0];//这句编译没有错误,说明a和b是同一类型,即int *和intp是一个意思,同一作用
}
用你的例子来解释:
typedef struct LNode
{//定义结构体
int data;
struct LNode *next;
}LNode,*LinkList;

void main()
{
LNode *a;
LinkList b;
a=b;
}

定义了一个名为LNode的结构LNode,该类型结构内部包含一个整型变量data和一个指向LNode结构的指针next,最后申明了一个该类型的指针LinkList。
链表使用的时候,关键之处在于next指向下一个动态申请的结构变量:
next =new LNode;
这样,通过对next指针的访问,就可以找出下一个结构体的位置,在通过对下一个结构体的next值的访问,又找出下下个结构体的位置,从而只要找到了链表的头位置,就可以访问整个链表。
双向链表比单向链表多了一个指向前节点的指针,上述结构体定义为双向链表应该如是:
typedef stru