数据结构链表小问题(不会耽误高手超过5分钟)

[复制链接]
查看11 | 回复2 | 2011-3-19 06:19:13 | 显示全部楼层 |阅读模式
我截取了其中的一段,主要是黑色字体的部分,除了出了点问题(我用的vc6.0)

#include stdio.h
#include malloc.h
#include stdlib.h
typedef struct DuLNode
{
int data;
DuLNode *prior,*next;
}DuLNode,*DuLinkList;

void InitList(DuLinkList
if(L)
L-next=L-prior=L;
else
exit(0);
}

DuLinkList GetElemP(DuLinkList L,int i)
{
int j;
DuLinkList p;
p=L;
// if(i0||iListLength(L))
//return NULL;
for(j=1;j=i;j)
p=p-next;
return p;
}
int ListInsert(DuLinkList
//int j;
// if(i0||iListLength(L) 1)
//return 0;
q=GetElemP(L,i-1);
if(!q)
return 0;
s=(DuLinkList)malloc(sizeof(DuLNode));
if(!s)
return 0;
s-data=e;
s-prior=q;
s-next=q-next;
q-next-prior=s;
q-next=s;
}
void main()
{
DuLinkList L;
int i,n=4;
int e;
InitList(L);
for(i=1;i=5;i)
ListInsert(L,i,i);
}

有请高手请教~~谢谢
回复

使用道具 举报

千问 | 2011-3-19 06:19:13 | 显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">这是变量和变量引用的区别:
如果用DuLinkList ,而在 void InitList(DuLinkList defds123List)中的是形参,(注意我将形参和实参用了L和List,表示区别,但是可以相同),如果不用defds123引用符,那么形参只是实参的一个拷贝,而用了defds123 就表示L和List 指的是同一个链表节点,List只是L的一个别名。

理解了上面的,你就知道如果不用引用符,在main函数中的链表的初始化,就没有做好,所以就出现问题了。

















<h4 class=\"ask\">追问





<pre class=\"replyask-text\" id=\"content-1973462\">我记得是C中有变量引用~~~C中也有吗~~我怎么没在书上看到呢
回复

使用道具 举报

千问 | 2011-3-19 06:19:13 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-1974614\">刚才的回答是我大意了, 我查了下 引用变量是C 中的定义,C中没有,但上面的情况却是和引用变量的实质是相同的,就是使形参引用实参的地址。我学了C ,看来我只是理解到了皮毛
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行