链表的插入和删除
时间:2011-07-27
来源:互联网
bool insert_list(pNode pHead, int pos,int val)
{
pNode p = pHead;//pHead为头指针
int i = 0;
while(p && i<pos-1)
{
p = p->next;
i++;
}
if (p || i>pos-1)
{
return false;
}
//下面省略
}
bool delete_list(pNode pHead, int pos,int *val)
{
pNode p = pHead;//pHead为头指针
int i = 0;
while(p->next && i<pos-1)
{
p = p->next;
i++;
}
if (p->next || i>pos-1)
{
return false;
}
//下面省略
}
请问一下 为什么 插入和删除中 while的循环判断条件不同 一个是 p 一个是p->next 还有就是谁能具体讲一讲这个算法的思想
{
pNode p = pHead;//pHead为头指针
int i = 0;
while(p && i<pos-1)
{
p = p->next;
i++;
}
if (p || i>pos-1)
{
return false;
}
//下面省略
}
bool delete_list(pNode pHead, int pos,int *val)
{
pNode p = pHead;//pHead为头指针
int i = 0;
while(p->next && i<pos-1)
{
p = p->next;
i++;
}
if (p->next || i>pos-1)
{
return false;
}
//下面省略
}
请问一下 为什么 插入和删除中 while的循环判断条件不同 一个是 p 一个是p->next 还有就是谁能具体讲一讲这个算法的思想
作者: wenhailong1224 发布时间: 2011-07-27
链表插入删除操作简单描述如下:
C/C++ code
对于楼主的程序,你可以在本机跑一下就清楚了
C/C++ code
typedef struct Node *link; struct Node{ unsigned char item; link next; }; void insert(link p) { p->next = head; head = p; } void delete(link p) { link pre; if (p == head) { head = p->next; return; } for (pre = head; pre; pre = pre->next) { if (pre->next == p) { pre->next = p->next; return; } } }
对于楼主的程序,你可以在本机跑一下就清楚了
作者: cougar0709 发布时间: 2011-07-27
插入的时候只要P不为空,我们就可以插入,插在p->next.
删除的时候,你要改变P这个节点的前后的指针,所以你要知道后面是不是空。不是空,就要将前面节点的指针指到p->next的节点,如果是空,那么直接删除,并且next赋值为空即可。
删除的时候,你要改变P这个节点的前后的指针,所以你要知道后面是不是空。不是空,就要将前面节点的指针指到p->next的节点,如果是空,那么直接删除,并且next赋值为空即可。
作者: zhang20072844 发布时间: 2011-07-27
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28