深入理解单链表检查指针和跟踪指针

复制代码
Status PriorElem(LinkList L, ElemType cur_e, ElemType &pre_e)
{  
  LinkList q, p=L->next; 
  while(p && p->next) 
  { q=p->next; 
    if(q->data==cur_e) 
    { pre_e=p->data; 
      return OK; 
    }
    p=q; 
  }
  return ERROR; 
}
Status NextElem(LinkList L, ElemType cur_e, ElemType &next_e)
{ 
  
  LinkList p=L->next; 
  while(p && p->next) 
  { if(p->data==cur_e) 
    { next_e=p->next->data; 
      return OK; 
    }
    p=p->next; 
  }
  return ERROR; 
}

高一凡代码

下面比较csdn上链式存储直接插入排序中pre指针使用

复制代码
void zhijiecharusort(LinkList& l)//直接插入排序
{// 使用指针p先保存下L中未排序元素(无序区中)的信息
	 使用指针p先保存下L中未排序元素(无序区中)的信息
	LinkList p = l->next->next;//第一个节点有序
	l->next->next = NULL;
	// 由于为了构造有序区,已经将待排序元素的第一个元素放在有序区中了,
 
	// 所以从第二个元素开始遍历,也就是p = L->next->next。 
	while (p)//p指向无序区
	{
		// 每循环一次p后移一位,直至p == NULL.
	// 进行插入有序区的操作时会改变p->next的值所以需要选保存一下
		LinkList q = p->next;
		// 为方便比较,用一个指针pre,指向有序区。(重点)
		LinkList pre = l;//为什么不能等于l->next
			// 遍历有序区中的所有元素,直至有序区末尾或者找到:
	// p所指的元素 大于 pre的next所指的元素为止,
		while (pre->next != NULL && pre->next->data < p->data)//pre->next->data < p->data一旦不符合这个条件就成:pre->data < p->data&&pre->next->data > p->data
			pre = pre->next;                                  //pre->next == NULL跳出循环,即pre是有序区最后一个节点
 
		// 找到比p大的节点后,执行插入操作,因为插入操作需要用到
	// 被插入节点的前驱节点,所以在比较时,用了pre->next来和p比较
		p->next = pre->next;
		pre->next = p;
		// 用q把p的值恢复过来,使得循环继续指向无序区的下一个节点
		p = q;//往后移动1位因为:LinkList q = p->next;
	}
}

LinkList pre = l;//为什么不能等于l->next
// 遍历有序区中的所有元素,直至有序区末尾或者找到:
// p所指的元素 大于 pre的next所指的元素为止,
while (pre->next != NULL && pre->next->data < p->data)//pre->next->data < p->data一旦不符合这个条件就成:pre->data < p->data&&pre->next->data > p->data
			pre = pre->next;                                  //pre->next == NULL跳出循环,即pre是有序区最后一个节点
相关推荐
忆挽篱笙歌3 小时前
通信连接,匿名管道
linux·服务器·网络
wangruofeng5 小时前
AI Models 1.1.0 发布,查大模型价格、对比模型和找 API 地址
前端·aigc·ai编程
wangruofeng5 小时前
给前端开发者的 100 个设计参考网站
前端·设计
无足鸟ICT6 小时前
【RHCA+】安装Tuned
linux·服务器·centos
Pniubi7 小时前
怎么排查慢SQL,怎么解决?
java·数据库·sql
薛之谦_8 小时前
Java 全栈知识体系:从 IDEA 高效开发到 JVM、并发与 Stream 实战
java·jvm·intellij-idea
星栈8 小时前
视频即代码,Remotion 能做什么、不能做什么
前端·音视频开发
广州华水科技8 小时前
单北斗GNSS位移监测系统的应用与技术解析
前端
用户47949283569158 小时前
从一句话或代码仓到可交互 HTML:开源 Agent 画图技能 Archify v3.2 实测与选型边界
前端·后端·面试
风骏时光牛马10 小时前
生成一个AI多模态标题,仅输出一条标题,无额外文字、问句、备选、配图、文案等任何附加内容,不需要其他的任务服务 只要标题。
前端