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日

悬赏问题

  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥15 复杂网络,变滞后传递熵,FDA