三九宝宝网宝宝教育教学论文

C语言单向链表的问题

02月07日 编辑 39baobao.com

[易语言lol挂载器源码]hanoi(n-1,one,three,two); move(one,three); hanoi(n-1,two,one,three); } } public static void move(char x,char y) { System.out.print(x); System.out.print("-->"); Sy...+阅读

上面这位老兄有点遗漏,我补充一下:

1、pr=p=(struct node*)malloc(sizeof(struct node));

这行的pr指针为什么要再指向p呢,我想是想象我下面更改后的代码里if块里面要执行的第二条语句,实际上两种写法的执行效果截然不同!

去掉pr=,因为它只是一个偏移指针,不需要真实分配内存给它。在下面的语句中,它是随着结点的插入而移动的!当链表插入第一个后pr必须指向head指向的内存块。

2、代码编写有误导致无法连接下面的结点,一下代码缺少括号:

f(head==NULL) /*判断是否为第一个结点*/ head=p; /*使指向第一个结点*/ else pr->next=p; /*连接结点*/ pr=p;

//应该加上括号,否则你上面的else代码只会执行第一句,而pr=p却总是无用地被执行。

if(head==NULL) /*判断是否为第一个结点*/

{ head=p; /*使指向第一个结点*/

pr = p; //pr 指针也应该指向开头的第一个结点。

} else

{ pr->next=p; /*连接结点*/ pr=p; //插入第二个结点后,pr指向第二个结点,插入第三个结点时,pr指向第三个结点,类推.....

}

建议出这样的错误的时候使用调试工具单步调试。细小的错误就会露出马脚来了!

对于括号的使用,不管你的if..else .. for ...while...里面有一条还是多条语句,都记得用括号括起来,对于初学者是一个很好的防止块里面遗漏语句的办法!

以下为关联文档:

小班语言教案元旦去文库,查看完整内容>内容来自用户:李鹏亚小班语言教案元旦【篇一:小班语言《年的来历》教案】小班语言《年的来历》教案活动目标1.通过欣赏故事,了解“年”的来历,知道我国过年...

c语言程序设计问题流程图程序过程及结果1,本题源程序如下: #include<stdio.h> #include<math.h> main() { int a,b,c,d; scanf("%d",&a); for(b=3;b<=a/2;b+=2) //b为a分解后其中一个小于a/2的一个素数 { for(c=2;c<=s...

大班语言:夏季冬天住在哪里活动背景和设计意图 《夏季,冬天住在哪里》是一首优美的散文诗,它从幼儿的眼光出发,以孩童般好奇的口吻,把贴近幼儿生活经验的季节性物品串联起来,生动形象地描写了四季特点。本...

C语言程序设计数组指针与字符串程序我在vc6.0上调试过了,能通过。 希望对你有所参考。 #include<iostream> using namespace std; int* min(int*array,int*s) { for(int i=0;i<5;i++) { for(int j=5*i;j<5*...

C语言字符指针数组#include"stdio.h" #include #define A 7 void main() { int i; char **p; p=(char **)malloc(sizeof(char *)); for(i=0;i p[i]=(char*)malloc(sizeof(char)); for(i=0;i { g...

C语言通用函数字符指针数组寻找指定字符串#includenbsp;“stdafx.h“#includenbsp;amp;lt;stdio.hamp;gt;#includenbsp;amp;lt;string.hamp;gt;intnbsp;str2str(constnbsp;charnbsp;*str,nbsp;constnbsp;charnbsp;*s...

c语言字符数组指针#include "stdio.h" #include "string.h" void main() { char a[81]=""; char *p=a; int n,k,pos; puts("input the data"); gets(a); n=strlen(a); puts("the position you want to...

关于C语言单向链表SLIST *creatlist(int *a){ SLIST *h,*p,*q; int i;h=p=(SLIST *)malloc(sizeof(SLIST));for(i=0; i<N; i++){ q=(SLIST *)malloc(sizeof(SLIST));q->data=a[i]; p->next=q;...

c语言创建单向链表函数void inputinfo(stu_info **head,int n) { int i=1; stu_info *loc_head=NULL,*tail; loc_head=(stu_info *)malloc(sizeof(stu_info)); tail=loc_head; for(i=1;i<=n;i++)...

推荐阅读
图文推荐