c语言单链表删除操作 为什么我输入1删除,被删除的是2啊

c语言单链表删除操作 为什么我输入1删除,被删除的是2啊,budongbudong

img

这没看到有学生学号的对比,你这看着像是按顺序删除的

供参考:

img

不知道你的问题解决了没有啊。。。。
从你的代码看链表是个单链表,你想找的是x - 1学号的学生。。。。
但是,代码的逻辑有点乱。。。。

  • 首先p 的初始化,为什么不是从h 开始,而是从h->next?
  • 第二,如果想拿到x -1 学号的学生,为什么i 是从0开始的,你的while 循环拿到的是x-1 的学生,如果从0 开始,应该是x 的学生,如果按照这样,你后面删的就是x+1的学生,也就是你要的后一个学生。。。。
  • 第三,这个代码设计的不是很好,理论上学生的信息应该有个数据结构,里面有学生的学号,根据这个来判断会更好。。。

希望你对你有所帮助。。