数据结构单链表 麻烦帮我看看怎么回事
void CreateList_L(LinkList *L, int n) {// 算法2.11// 逆位序输入(随机产生)n个元素的值,建立带表头结点的单链线性表L
LinkList p;
int i;
srand(time(0));
(*L) = (LinkList)malloc(sizeof(LNode));
(*L)->next = NULL; // 先建立一个带头结点的单链表
for (i=0; i<n; i++) {
p = (LinkList)malloc(sizeof(LNode));// 生成新结点
p->data = rand()%100+1; // 改为一个随机生成的数字
p->next = (*L)->next;
(*L)->next = p; // 插入到表头
}
} // CreateList_L
这里面为什么是(*L)->next在结构体中不是(*L).next 的引用吗 ?
还有第二个问题p = (LinkList)malloc(sizeof(LNode)) 这个中被强制转换后 不是指针了 怎么可以赋值给指针变量P呢 malloc没有被强制转换返回的是viod*类型的 相当于一个地址。我想应该是p = (LinkList*)malloc(sizeof(LNode))
在这句(*L) = (LinkList)malloc(sizeof(LNode))中(*L) 表示的不是指针了 因为有个* 是取指针L所指向的内容或者赋值给它经过强制转换 2边类型一样可以赋值但是在p = (LinkList)malloc(sizeof(LNode)) 这个中 按那样分析就说不通了。。这到底那里出错了呀??????????????????? (*L) = (LinkList)malloc(sizeof(LNode));
这句不是应该是L = (LinkList *)malloc(sizeof(LNode)); 这样写么. (*L)->next在结构体中不是(*L).next //(*L)->next没见过这种写法
应该是L->next和(*L).next 小人 发表于 2014-11-28 15:27
(*L) = (LinkList)malloc(sizeof(LNode));
这句不是应该是L = (LinkList *)malloc(sizeof(LNode)); 这 ...
但是 小甲鱼老子是这样写的 没错 小人 发表于 2014-11-28 15:38
(*L)->next在结构体中不是(*L).next //(*L)->next没见过这种写法
应该是L->next和(*L).next
小甲鱼老师是这样写的 不知道写错了还是什么的 woaini92887 发表于 2014-11-28 07:58
小甲鱼老师是这样写的 不知道写错了还是什么的
或许是我忘记了吧 激动人
心无法言表 楼主你现在明白了,我也遇到这个问题,好费解 你是这样定义的啊LinkList *L ,所以*L分配的空间是这个类型的
页:
[1]