重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先,根据你给的信息,估计是有循环操作,另外,既然命名是temp,就表示它是个临时变量,起到的作用可能只是变量传值的一个中介,就像冒泡排序的时候,循环中,两个变量值需要调换的时候,往往都是这样,第一个变量值赋值给第二个变量,第二个变量值赋值给temp,最后把temp赋值给第一个变量。
目前创新互联建站已为近千家的企业提供了网站建设、域名、虚拟空间、成都网站托管、企业网站设计、乐业网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
至于temp为什么要赋null值,还是因为要循环的原因,循环当中,变量是要赋值多次的,
if ((h=(stud *)malloc(sizeof(stud)))==NULL)\\这一行的作用是什么?
这行是用来分配空间的。。,如果分配失败就返回。
if((s=(stud *)malloc(sizeof(stud)))==NULL)\\为什么要循环多次地执行这行?这行的作用是什么?
这行也是,因为有n个人,每个人都要分配空间啊。
return(h);\\这行代码又有什么作用?
把建立好的链表返回调用函数
我用VC++6.0运行该程序时提示“Error spawing CL.EXE”,该怎么解决?
可能是这个文件变成了只读, 重新建立一个就行。
楼主,这个是合理的,分析如下:
在List 类的add方法中,循环:
while (e.next!=null)//居然是空的 那么这里判断他非空不是没有意义么
e=e.next;
作用是获取链表的最后一个元素,以使新添加的结点能够挂到最后面。当你第一次添加结点的时候, head的next也是为空,那么循环后面的两句代码:
e.next=newEntry;
return newEntry;(注意这两句不属于循环体)意思就是把head的next结点设置为新添加的结点了。这个时候,head的next值就不为空了,其指向的是你刚才添加的结点。
这时如果再次添加结点,循环while (e.next!=null)将会循环一次,在循环结束时,e就不再指向head了,而是指向你上次添加的结点,也就是链表的最后一个结点。
remove方法中也是这样的原理。希望能帮助到楼主