单链表 问题 运行时不知道是报的什么错误

sanhu520 2009-12-15 07:19:33
/*第 147 题 : 链式线性表的插入与删除
(时间限制为:500毫秒)


描述:删除链式线性表指定位置的元素。
输入:第一行为自然数n,表示链式线性表的长度,第二行为n个自然数表示链式线性表各元素值。第三行为指定删除的位置,第四行为插入的位置及元素值(如果位置不对,则不作操作,插入位置应在删除元素后重新计数)。
输出:输出删除与插入元素后的链式线性表的所有元素,元素之间用一个空格隔开。
样例输入:
5
1 2 3 4 5
3
6 7
样例输出:
1 2 4 5
*/
#include "stdio.h"
#include "malloc.h"
void main()
{
typedef struct A
{
int data;
struct A *next;
}a;

A *p,*q,*head,*s;
int n,i,m,x,y;
p=(A *)malloc(sizeof(A));
p->next=NULL;
head=p;

scanf("%d",&n);
for(i=0;i<n;i++)
{ q=p;
p=(A *)malloc(sizeof(A));
scanf("%d",&p->data);
q->next=p;
}
p->next=NULL;

scanf("%d",&m);
if(m>0&&m<=n)
{
p=head;
for(i=1;i<m;i++)
p=p->next;
s=p->next;
p->next=s->next;
n--;
free(s);
}
scanf("%d%d",&x,&y);
if(x>0&&x<=n)
{ q=head;
p=(a *)malloc(sizeof(A));
p->data=y;
for(i=1;i<x;i++)
q=q->next;
p->next=q->next;
q=p;
}
while(head)
{
head=head->next;
printf("%d ",head->data);
}
}
...全文
94 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zengwujun 2009-12-17
  • 打赏
  • 举报
回复
最后的打印循环多了一个元素,改为下面的
head = head->next;
while(head)
{
printf("%d ", head->data);
head = head->next;
}
sanhu520 2009-12-16
  • 打赏
  • 举报
回复
粘贴不出来
你在你的电脑上运行下就
就知道了 最后答案错误 还报出地址不能被写
blk2010weiwang 2009-12-16
  • 打赏
  • 举报
回复
改一下你的while循环
while(head)
{
if(head->next)
{
head=head->next;
printf("%d ",head->data);
}
else
{
break;
}
}
醉杯殇 2009-12-16
  • 打赏
  • 举报
回复
把报的东西帖出来啊

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧