求c语言大神指教 这是一个简易链表

#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>structnum{intnum;str... #define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
struct num
{ int num;
struct num *link;
};
void main()
{ struct num *head=NULL,*p,*q;
int n;
printf("pledse input number and end with number '0'\n");
scanf("%d",&n);
while(n!=0)
{ p=(struct num*)malloc(sizeof(struct num));
p->num=n;
p->link=NULL;
if(head==NULL)
head=p;
else
q->link=p; //使用了可能未初始化的本地指针变量“q” 求解
q=p;
scanf("%d",&n);
}
printf("the string is\n");
p=head;
while(p)
printf("%d",p->num);
printf("delete the fifth element\n");
p=head;
n=1;
while(p!=NULL&&n!=5)
{ q=p;
p=p->link;
n++;}
q->link=p->link;
p=head;
while(p)
printf("%d",p->num);
p=head;
while(p)
{ q=p->link;
free(p);
p=q;}
head=NULL;

}
展开
 我来答
sleeplioncj
2013-07-20 · TA获得超过288个赞
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:107万
展开全部
问题很简单,你程序中有两个死循环,如下:
while(p)
printf("%d",p->num);

应该修改如下:
while(p)
{
printf("%d",p->num);
p=p->link;
}
追问
你说对!
但修改后还是提示 error C4703: 使用了可能未初始化的本地指针变量“q”
求解怎么破!
追答
那就初始化一下。
struct num *head=NULL,*p=NULL,*q=NULL;
yunxian_19
2013-07-20 · TA获得超过317个赞
知道小有建树答主
回答量:218
采纳率:0%
帮助的人:187万
展开全部
先说你的需求吧。需要别人做什么
追问
求 指出错误即可
追答

给你修正ok了,已经在vc6下成功运行。

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>


struct num

{ int inum;

  struct num *link;

};

void main()

{ struct num *head=NULL,*p,*q;

  int n;

  printf("please input number and end with number '0'\n");

  scanf("%d",&n);

  while(n!=0)

  { p=(struct num*)malloc(sizeof(struct num));

    p->inum=n;

p->link=NULL;

if(head==NULL)

head=p;

else 

q->link=p; //使用了可能未初始化的本地指针变量“q”  求解

q=p;

scanf("%d",&n);

  }


  printf("the string is\n");

  p=head;

  while(p)

  {

  printf("%d ",p->inum);

  p=p->link;

  }

  printf("\n");


  printf("delete the fifth element\n");

  p=head;

  n=1;

  while(p!=NULL&&n<5)

  { q=p;

    p=p->link;

    n++;

  }


  if (p!=NULL)

  {

printf("the deleted  fifth element is: %d\n",p->inum);

   q->link=p->link;

  }



  printf("剩余的元素\n");

  p=head;

 while(p)

 {

  printf("%d ",p->inum);

p=p->link;

}

printf("\n");

 p=head;

 while(p)

 { q=p->link;

   free(p);

   p=q;}

 head=NULL;


}


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
最爱自己的修罗
2013-07-20
知道答主
回答量:40
采纳率:0%
帮助的人:35.4万
展开全部
换个编译器即可 有时候用vc++6.0也挺好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式