user-0 提问: 单链表插入！！！

回复:
user: user-0
content: 引用 12 楼 YXTS122 的回复:因为p要后移，所以引入ptr来保存p当前指向的结点的地址，保存这个地址后面会用到 嗯  好的  我懂了

user: user-1
content: 因为p要后移，所以引入ptr来保存p当前指向的结点的地址，保存这个地址后面会用到

user: user-0
content: 引用 7 楼 a7716021 的回复:[quote=引用 6 楼 a7716021 的回复:] [quote=引用 4 楼 xinye1230 的回复:] [quote=引用 2 楼 a7716021 的回复:] 楼上正解， data 根本没有被定义， e 也没有被使用， 估计是形参写错了   代码本身有问题。 把e改成data 应该就能看懂了吧  void InsertList(LinkList L,int e) en   是的  形参我打错了  但是改成data 还是不太懂[/quote]  p->data  <  data 就是把你传进来的形参数据 data  和指针p 所指向的 链表中的 数据 进行对比， 如果 p 指向的数据  小于 形参传进来的数据    则进到if语句里面（当然 p->data < data 只是其中一个条件）[/quote] 引用 6 楼 a7716021 的回复:[quote=引用 4 楼 xinye1230 的回复:] [quote=引用 2 楼 a7716021 的回复:] 楼上正解， data 根本没有被定义， e 也没有被使用， 估计是形参写错了   代码本身有问题。 把e改成data 应该就能看懂了吧  void InsertList(LinkList L,int e) en   是的  形参我打错了  但是改成data 还是不太懂[/quote]  p->data  <  data 就是把你传进来的形参数据 data  和指针p 所指向的 链表中的 数据 进行对比， 如果 p 指向的数据  小于 形参传进来的数据    则进到if语句里面（当然 p->data < data 只是其中一个条件）[/quote] 刚才看错了 不是if 语句 是while里面    其实都是一样的 while(表达式){  }  当while 小括号里面的表达式 为真时 就会一直循环 直到表达式的值为假时 才会跳出循环  [/quote] 那ptr是一个指针吗？为什么要多一个ptr呢？

user: user-2
content: 引用 9 楼 a7716021 的回复:[quote=引用 8 楼 xinye1230 的回复:] [quote=引用 7 楼 a7716021的回复:][quote=引用 6 楼 a7716021 的回复:] [quote=引用 4 楼 xinye1230 的回复:] [quote=引用 2 楼 a7716021 的回复:] 楼上正解， data 根本没有被定义， e 也没有被使用， 估计是形参写错了   代码本身有问题。 把e改成data 应该就能看懂了吧  void InsertList(LinkList L,int e) en   是的  形参我打错了  但是改成data 还是不太懂[/quote]  p->data  <  data 就是把你传进来的形参数据 data  和指针p 所指向的 链表中的 数据 进行对比， 如果 p 指向的数据  小于 形参传进来的数据    则进到if语句里面（当然 p->data < data 只是其中一个条件）[/quote] 引用 6 楼 a7716021 的回复:[quote=引用 4 楼 xinye1230 的回复:] [quote=引用 2 楼 a7716021 的回复:] 楼上正解， data 根本没有被定义， e 也没有被使用， 估计是形参写错了   代码本身有问题。 把e改成data 应该就能看懂了吧  void InsertList(LinkList L,int e) en   是的  形参我打错了  但是改成data 还是不太懂[/quote]  p->data  <  data 就是把你传进来的形参数据 data  和指针p 所指向的 链表中的 数据 进行对比， 如果 p 指向的数据  小于 形参传进来的数据    则进到if语句里面（当然 p->data < data 只是其中一个条件）[/quote] 刚才看错了 不是if 语句 是while里面    其实都是一样的 while(表达式){  }  当while 小括号里面的表达式 为真时 就会一直循环 直到表达式的值为假时 才会跳出循环  [/quote] 那后面怎么又出来一个p->data>=data呢？是它为假跳出循环时的条件嘛？[/quote]  根据你这个代码 我感觉是对一个已有的有序链表进行有序插入，  所以需要对插入数据 进行大小判断。 前面的循环是用来定位当前数据该插入的数据， 比如你对1 3 5 7 9 这个链表要进行插入， 插入数据为6  他就先需要逐一判断 1357然后把数据插入到5和7之间，  最后的那个if 是用来判断链表末尾的，也就是说 如果你插入的数据，比链表里所有的数据都大，则把它放在最后一项。[/quote]  最后的那个if(p->data >=data) 是在循环外面的 所以不是跳出循环。（循环的有效范围是循环本身的{}  ）

user: user-2
content: 引用 8 楼 xinye1230 的回复:[quote=引用 7 楼 a7716021的回复:][quote=引用 6 楼 a7716021 的回复:] [quote=引用 4 楼 xinye1230 的回复:] [quote=引用 2 楼 a7716021 的回复:] 楼上正解， data 根本没有被定义， e 也没有被使用， 估计是形参写错了   代码本身有问题。 把e改成data 应该就能看懂了吧  void InsertList(LinkList L,int e) en   是的  形参我打错了  但是改成data 还是不太懂[/quote]  p->data  <  data 就是把你传进来的形参数据 data  和指针p 所指向的 链表中的 数据 进行对比， 如果 p 指向的数据  小于 形参传进来的数据    则进到if语句里面（当然 p->data < data 只是其中一个条件）[/quote] 引用 6 楼 a7716021 的回复:[quote=引用 4 楼 xinye1230 的回复:] [quote=引用 2 楼 a7716021 的回复:] 楼上正解， data 根本没有被定义， e 也没有被使用， 估计是形参写错了   代码本身有问题。 把e改成data 应该就能看懂了吧  void InsertList(LinkList L,int e) en   是的  形参我打错了  但是改成data 还是不太懂[/quote]  p->data  <  data 就是把你传进来的形参数据 data  和指针p 所指向的 链表中的 数据 进行对比， 如果 p 指向的数据  小于 形参传进来的数据    则进到if语句里面（当然 p->data < data 只是其中一个条件）[/quote] 刚才看错了 不是if 语句 是while里面    其实都是一样的 while(表达式){  }  当while 小括号里面的表达式 为真时 就会一直循环 直到表达式的值为假时 才会跳出循环  [/quote] 那后面怎么又出来一个p->data>=data呢？是它为假跳出循环时的条件嘛？[/quote]  根据你这个代码 我感觉是对一个已有的有序链表进行有序插入，  所以需要对插入数据 进行大小判断。 前面的循环是用来定位当前数据该插入的数据， 比如你对1 3 5 7 9 这个链表要进行插入， 插入数据为6  他就先需要逐一判断 1357然后把数据插入到5和7之间，  最后的那个if 是用来判断链表末尾的，也就是说 如果你插入的数据，比链表里所有的数据都大，则把它放在最后一项。

user: user-0
content: 引用 7 楼 a7716021的回复:[quote=引用 6 楼 a7716021 的回复:] [quote=引用 4 楼 xinye1230 的回复:] [quote=引用 2 楼 a7716021 的回复:] 楼上正解， data 根本没有被定义， e 也没有被使用， 估计是形参写错了   代码本身有问题。 把e改成data 应该就能看懂了吧  void InsertList(LinkList L,int e) en   是的  形参我打错了  但是改成data 还是不太懂[/quote]  p->data  <  data 就是把你传进来的形参数据 data  和指针p 所指向的 链表中的 数据 进行对比， 如果 p 指向的数据  小于 形参传进来的数据    则进到if语句里面（当然 p->data < data 只是其中一个条件）[/quote] 引用 6 楼 a7716021 的回复:[quote=引用 4 楼 xinye1230 的回复:] [quote=引用 2 楼 a7716021 的回复:] 楼上正解， data 根本没有被定义， e 也没有被使用， 估计是形参写错了   代码本身有问题。 把e改成data 应该就能看懂了吧  void InsertList(LinkList L,int e) en   是的  形参我打错了  但是改成data 还是不太懂[/quote]  p->data  <  data 就是把你传进来的形参数据 data  和指针p 所指向的 链表中的 数据 进行对比， 如果 p 指向的数据  小于 形参传进来的数据    则进到if语句里面（当然 p->data < data 只是其中一个条件）[/quote] 刚才看错了 不是if 语句 是while里面    其实都是一样的 while(表达式){  }  当while 小括号里面的表达式 为真时 就会一直循环 直到表达式的值为假时 才会跳出循环  [/quote] 那后面怎么又出来一个p->data>=data呢？是它为假跳出循环时的条件嘛？

user: user-2
content: 引用 6 楼 a7716021 的回复:[quote=引用 4 楼 xinye1230 的回复:] [quote=引用 2 楼 a7716021 的回复:] 楼上正解， data 根本没有被定义， e 也没有被使用， 估计是形参写错了   代码本身有问题。 把e改成data 应该就能看懂了吧  void InsertList(LinkList L,int e) en   是的  形参我打错了  但是改成data 还是不太懂[/quote]  p->data  <  data 就是把你传进来的形参数据 data  和指针p 所指向的 链表中的 数据 进行对比， 如果 p 指向的数据  小于 形参传进来的数据    则进到if语句里面（当然 p->data < data 只是其中一个条件）[/quote] 引用 6 楼 a7716021 的回复:[quote=引用 4 楼 xinye1230 的回复:] [quote=引用 2 楼 a7716021 的回复:] 楼上正解， data 根本没有被定义， e 也没有被使用， 估计是形参写错了   代码本身有问题。 把e改成data 应该就能看懂了吧  void InsertList(LinkList L,int e) en   是的  形参我打错了  但是改成data 还是不太懂[/quote]  p->data  <  data 就是把你传进来的形参数据 data  和指针p 所指向的 链表中的 数据 进行对比， 如果 p 指向的数据  小于 形参传进来的数据    则进到if语句里面（当然 p->data < data 只是其中一个条件）[/quote] 刚才看错了 不是if 语句 是while里面    其实都是一样的 while(表达式){  }  当while 小括号里面的表达式 为真时 就会一直循环 直到表达式的值为假时 才会跳出循环

user: user-2
content: 引用 4 楼 xinye1230 的回复:[quote=引用 2 楼 a7716021 的回复:] 楼上正解， data 根本没有被定义， e 也没有被使用， 估计是形参写错了   代码本身有问题。 把e改成data 应该就能看懂了吧  void InsertList(LinkList L,int e) en   是的  形参我打错了  但是改成data 还是不太懂[/quote]  p->data  <  data 就是把你传进来的形参数据 data  和指针p 所指向的 链表中的 数据 进行对比， 如果 p 指向的数据  小于 形参传进来的数据    则进到if语句里面（当然 p->data < data 只是其中一个条件）

user: user-2
content: 引用 4 楼 xinye1230 的回复:[quote=引用 2 楼 a7716021 的回复:] 楼上正解， data 根本没有被定义， e 也没有被使用， 估计是形参写错了   代码本身有问题。 把e改成data 应该就能看懂了吧  void InsertList(LinkList L,int e) en   是的  形参我打错了  但是改成data 还是不太懂[/quote]  你不懂的是p->data  <  data ? 这句么？

user: user-0
content: 引用 2 楼 a7716021 的回复:楼上正解， data 根本没有被定义， e 也没有被使用， 估计是形参写错了   代码本身有问题。 把e改成data 应该就能看懂了吧  void InsertList(LinkList L,int e) en   是的  形参我打错了  但是改成data 还是不太懂

user: user-0
content: 引用 1 楼 qq423399099 的回复:你确定你的第二个参数是int e而不是int data? PS:而且21行少了个= 嗯  是的  void InsertList(LinkList L,int data)

user: user-2
content: 楼上正解， data 根本没有被定义， e 也没有被使用， 估计是形参写错了   代码本身有问题。 把e改成data 应该就能看懂了吧

user: user-3
content: 你确定你的第二个参数是int e而不是int data? PS:而且21行少了个=