鱼C论坛

 找回密码
 立即注册
查看: 2751|回复: 3

内存不能为read的问题

[复制链接]
发表于 2013-11-4 22:59:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
struct student
{
int num;
};
struct linklist
{
struct student data;
struct linklist *next;
};
int n=0;
struct linklist *creat()
{
struct linklist *p1;
struct linklist *p2;
struct linklist *head;
p1=p2=(struct linklist *)malloc(sizeof(struct linklist));
head=0;
scanf("%d",&p1->data.num);
while(p1->data.num!=0)
{
  n+=1;
  if(n==1)
   head=p1;
  else
   p2->next=p1;
  p2=p1;
  p1=(struct linklist *)malloc(sizeof(struct linklist));
  scanf("%d",&p1->data.num);
}
p2->next=0;
return head;
}
struct linklist *reverse(struct linklist *head)   //让一个链表逆置的函数
{
struct linklist *tmp,*p2,*p1;
tmp=head;
tmp->next=0;
p2=head->next;
p1=head->next->next;//问题就在这里,看上去好像没错吧,但是运行的时候老是说内存不能为read;
while(p2->next!=0)
{
  p2->next=tmp;
  tmp=p2;;
  p2=p1;
  
  p1=p1->next;
  //if(tmp->next)

}
p2->next=tmp;
return p2;
}
void print(struct linklist *head)
{
struct linklist *p;
p=head;
while(p!=0)
{
  printf("%d ",p->data.num);
  p=p->next;
}
}
int main()
{
struct linklist *head;
head=(struct linklist *)malloc(sizeof(struct linklist));
printf("请输入一个数字\n");
head=creat();
print(head);
head=reverse(head);
print(head);
return 0;
}


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-4 23:00:05 | 显示全部楼层
学校不断点的话,在线等到天明!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-5 11:21:47 | 显示全部楼层
把p2=head->next;
p1=head->next->next;
移到tmp->next=0;
之前就可以了。
我真笨!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-5 11:38:51 | 显示全部楼层
你耍我们呢。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 01:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表