链表中p->next=head->next;语句解析
来源:互联网 发布:网络写手平台 编辑:程序博客网 时间:2024/05/21 13:55
在看到一些书上或者网上写的不管是单链表还是双向循环链表等,都会有p->next=q->next;或者p-next=head->next;
这里q是尾指针,head是头指针,p是指向新建结点的指针
该语句作用
这条语句的作用其实就是给新建结点找到它该有的位置
该语句在单链表下的头插法是必须存在的,而在双向循环下可有可无
1.单链表的头插法下p-next=head->next;
LinkList InsertList_head(LinkList head)//头插{ LinkList p; int i; head=(LinkList)malloc(sizeof(LNode)); head->next=NULL; scanf("%d",&i); while(i!=0) { p=(LinkList)malloc(sizeof(LNode)); //scanf("%d",&p->data); p->data=i; p->next=head->next; head->next=p; scanf("%d",&i); } return head;}
比如以上是单链表的头插法代码,假如将p->next=head->next;注释了,此时没有一条语句来确定p指向的新建结点是在前一结点之后的
2.双向循环链表p-next=head->next;
LinkList MCreatlist_last(LinkList head,Elemtype n)//尾插法 { LinkList p; LinkList q;//尾指针 int i; head=(LinkList)malloc(sizeof(LNode)); head->next=head; head->prior=head; q=head; for(i=0;i<n;i++) { p=(LinkList)malloc(sizeof(LNode)); scanf("%d",&p->data); p->next=q->next; p->prior=q; q->next=p; q=p; } head->prior=q; return head; }
可通过以下图来理解这条语句,任何链表都适用
当新建了新的结点后,该结点的位置是无法找到的,当p->next指向q->next时,即该新建结点指向q的下一个结点使得p实现了插入到该结点(也算是p找到了它的位置)
为什么说p->next=q->next;是可有可无的呢,因为其实是因为p->prior=q;这条语句也可有使得新建结点找到它的家,只是加了p->next=q->next;会更加完整,安全
阅读全文
0 0
- 链表中p->next=head->next;语句解析
- 有关head->next = p;和p=head->next;之间的区别
- p=p->next
- 关于p->next=p;和p=p->next;的刨根问底(也有转的内容)
- s->next=head; head=s;如何理解
- next()
- next()
- Next
- next()
- next
- For Each...Next 语句
- For Each...Next 语句
- perl next语句
- p++ 与 p->next的区别
- 删除链表中的元素//p=pre;//重复的1-1,要判断重复判读。hh->next=head;//头上加头,不用考虑链表换头
- The meaning of p->Next==NULL
- innodb next-key lock解析
- innodb next-key lock解析
- 最小公倍数和最大公约数
- 螺旋矩阵 II -LintCode
- QString::arg()//用字符串变量参数依次替代字符串中最小数值
- 内容提供者——查询联系人
- 驱寒药不妨试试这几种食物
- 链表中p->next=head->next;语句解析
- Discuz!X 前台任意文件删除漏洞复现测试
- 设计心理学学习
- 汽车EPS解析
- android activity 启动模式 ==> launchmode
- sort +awk+uniq 统计文件中出现次数最多的前10个单词 (2012-12-05 15:57:12)转载▼ 标签: 转载 原文地址:sort +awk+uniq 统计文件中出现次数最多的前
- 网上商城 重难点
- Windows 中的三种对象
- 线索二叉树(二)