sm123m 2014-12-27 14:52 采纳率: 0%
浏览 3617

c语言链表节点删除问题求解

这是一个删除结点并输出的程序,总共有三个链表
错误为:当删除最后一个链表也就是3时程序发生错误,停止运行。
求大家帮忙解解决!

#include <stdio.h>  
#define NUll 0
#include <stdlib.h>
struct stu
{
    char name[6];
    int xuehao;
    int grade;
    struct stu *next;
};
typedef struct stu STU;
main()
{
   STU *p,*p_start,*p2,*p_print,*p_charu,*p_charu2;
   int i,xuehao;
   //输入 
   for (i=0;i<3;i++)
   {
    p=(STU *)malloc(sizeof(STU));
    printf("请输入学生姓名:\n");
    scanf("%s",&p->name);
    printf("请输入学生的学号:\n");
    scanf("%d",&p->xuehao);
    printf("请输入学生的成绩:\n");
    scanf("%d",&p->grade);
    if (i==0)
    p2=p_start=p;
    else
    {
     p2->next=p;
     p2=p;
     if (i==2)
     p->next=NULL;
    }
   }

   //链表的删除 
   p_charu=p_start;
   printf("请输入要删除的学号\n");
   scanf("%d",&xuehao);
   while (1)
   {
    p_charu2=p_charu->next;
   if (p_charu->next->xuehao==xuehao)
       {
       p_charu->next=p_charu->next->next;
       free(p_charu2);
        break;
       } 
 if (p_charu->xuehao==xuehao)
    {
      p_start=p_charu->next;
      free(p_charu);
      break;    
    }
    p_charu=p->next;
   } 
}
  • 写回答

4条回答 默认 最新

  • threenewbee 2014-12-27 14:57
    关注

    既然用C++,用cin cout代替printf scanf比较好,你这个格式有问题。

    评论

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题