weixin_46085506 2020-05-05 10:52 采纳率: 0%
浏览 477
已采纳

新手提问: insert_node函数中 while后面的(p!='\0')为什么放后面就不能实现“若值为x的节点不存在,则插在末尾”;放前面就没问题。 求大佬解释一下 这个坎不过去心里堵得慌。

#include
//动态链表的创建:
//编写函数creat_list,建立带有头节点的单向链表,节点数据域中的值由键盘输入,以-1作为输入结束标志,链表头结点的地址由函数返回
#include
typedef struct slist
{
int data;
struct slist *next;
} ST;

ST *creat_list()
{
int c;
ST *h,*s,*r;
h=(ST *)malloc(sizeof(ST));//生成头节点
r=h;
scanf("%d",&c);
while(c!=-1)
{
s=(ST *)malloc(sizeof(ST));//生成新的节点
s->data =c;
r->next =s;//新节点链接到表的末尾
r=s;//指向链表的末尾
scanf("%d",&c);
}
r->next ='\0';//链表的结束标志
return h;//返回链表的头节点
}

//编写函数print_list,顺序输出单项链表各个节点中数据域中的值
void printf_list(ST *head)
{
ST *p;
p=head->next ;//指向头结点后的第一个节点
if(p=='\0') printf("空链表\n");
else
{
printf("head");
do
{
printf("-->%d",p->data );
p=p->next ;//p指向下一个节点
}
while(p!='\0');
printf("-->end\n");
}

}

//编写函数insert_node,在值为x的节点前插入值为y的节点,若值为x的节点不存在,则插在末尾
void insert_node(ST *head,int x,int y)
{
ST *s,*p,*q;
s=(ST *)malloc(sizeof(ST));//生成新的节点
s->data =y;//新节点中存入y值
q=head;
p=head->next ;
while((p->data !=x)&&(p !='\0'))
{
q=p;
p=p->next ;
}
s->next =p;
q->next =s;
}

//编写函数delete_list,删除链表中值为x的节点,并释放对应的存储空间
void delete_list(ST *head,int x)
{
ST *p,*q;
q=head;
p=head->next ;

while((p!='\0')&&(p->data !=x))
{
    q=p;
    p=p->next ;


}



if(p=='\0') 
    printf("tan90\n");
else
{
    q->next =p->next ;
    free(p);


}

}
void main()
{
ST *head;
int x,y;
head=creat_list();//创建链表
printf_list(head);//输出链表

printf("输入查找值:");
scanf("%d",&x);
printf("输入插入值:");
scanf("%d",&y);
insert_node(head,x,y);
printf_list(head);//输出链表

printf("输入需要删除值:");
scanf("%d",&x);
printf("需要删除值为:%d\n",x);
delete_list(head,x);
printf_list(head);//输出链表

}

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2020-05-05 12:29
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 12月9日

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?