C++程序改错
答案:2 悬赏:0 手机版
解决时间 2021-03-25 09:57
- 提问者网友:最爱你的唇
- 2021-03-25 03:55
C++程序改错
最佳答案
- 五星知识达人网友:老鼠爱大米
- 2021-03-25 04:23
#include
#include
#define LEN sizeof(struct node)
struct node
{int data;
struct node *next;
};
int main()
{
struct node *head=NULL,*p,*q;
int i,n=4;
for(i=1;i<=n;i++)
{
p=(struct node*)malloc(LEN);
printf("请输入第%d个结点数据:",i);
scanf("%d",&p->data);
//原来的程序把新加的节点置于链表的最前,修改后,新节点置于链表最后
p->next=NULL;
if (head==NULL) //如果还没有节点,head=新节点
head=p;
else{
q=head;
while(q->next!=NULL) q=q->next; //找出最后一个节点
q->next=p; //最后一个节点的next指向新节点
}
//p->next=head;
//head=p;
}
p=head;
while(p!=NULL)
{
if(p->next!=NULL)
{
q=p->next;
p->data=p->data + q->data;
p->next=q->next;
free(q);
}
p=p->next;
}
p=head; //要输出数据,要先把p重新定为链表头
do
{printf("%d ",p->data);
p=p->next;
}while(p!=NULL);
return 0;
}追问顺便问一下,为什么38行要free(q)
#include
#define LEN sizeof(struct node)
struct node
{int data;
struct node *next;
};
int main()
{
struct node *head=NULL,*p,*q;
int i,n=4;
for(i=1;i<=n;i++)
{
p=(struct node*)malloc(LEN);
printf("请输入第%d个结点数据:",i);
scanf("%d",&p->data);
//原来的程序把新加的节点置于链表的最前,修改后,新节点置于链表最后
p->next=NULL;
if (head==NULL) //如果还没有节点,head=新节点
head=p;
else{
q=head;
while(q->next!=NULL) q=q->next; //找出最后一个节点
q->next=p; //最后一个节点的next指向新节点
}
//p->next=head;
//head=p;
}
p=head;
while(p!=NULL)
{
if(p->next!=NULL)
{
q=p->next;
p->data=p->data + q->data;
p->next=q->next;
free(q);
}
p=p->next;
}
p=head; //要输出数据,要先把p重新定为链表头
do
{printf("%d ",p->data);
p=p->next;
}while(p!=NULL);
return 0;
}追问顺便问一下,为什么38行要free(q)
全部回答
- 1楼网友:过活
- 2021-03-25 04:34
for(i=1;i<=n;i++)
{
p=(struct node*)malloc(LEN);
printf("请输入第%d个结点数据:",i);
scanf("%d",&p->data);
p->next = head;
struct node *q = head;
while(node->next != head)
node = node->next;
node->next = p;
}追问还是不行啊
{
p=(struct node*)malloc(LEN);
printf("请输入第%d个结点数据:",i);
scanf("%d",&p->data);
p->next = head;
struct node *q = head;
while(node->next != head)
node = node->next;
node->next = p;
}追问还是不行啊
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯