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