【Estructura de datos y algoritmo】Lista de doble enlace Eliminar nodo máximo

tema:

  Pregunta: Use una estructura de almacenamiento de lista de doble enlace y escriba un algoritmo para eliminar el nodo de valor máximo


Ideas principales:

  1. Crea dos punteros p y  se usa para recorrer todos los elementos de la lista vinculada; se usa para apuntar a la matriz qdel elemento más grande actualpq
  2. pCada vez que pase por un nodo, compare p.data  con y   q.data, si p.data  >   q.data, qseñale el punto de la p actual.
  3. Cuando p -> next = frist se complete el recorrido, verifique qel elemento apuntado en este momento, para que pueda q -> prior -> next = q ->priorseguirse free (q).

Ilustración:

Diagrama de eliminación del nodo de valor máximo en una lista de doble enlace


el código

//求双链表表长
int DllLength(){
    
    
	int cnt = 0;
	int m = first;
	while(m -> next != first)
	{
    
    
		m = m -> next;
		cnt++;
	}
	return cnt;
}
//比较,若p.data 大于 q.data则将p赋值给q
void compare(int *p, int *q){
    
    
	if(p.data > q.data) 
	q = p;
}
//删除双链表最大值节点
void DeleteDllMax(Dll){
    
    
	//p、q初始都指向第一个首元节点
	int p = first -> next, q = first -> next;
	for(int i = 0; i < DllLength(); i++){
    
    
		//p每移动一次就要将p和q的data进行比较
		p = p->next;
		compare(p , q);
	}
	//遍历完毕后删除q(指向最大值)
	q -> prior -> next = q -> next;
	q -> next -> prior = q -> prior;
	free(q);
	return;
}


imagen de código

Imagen de código completo


conclusión

  Debido a que es una guarnición de algoritmo, los métodos y las ideas proporcionados pueden no ser muy buenos, tenga paciencia conmigo ~ Si tiene alguna pregunta, deje un mensaje para discutir. Si cree que este artículo es útil para usted, ¿puede darnos me gusta gratis? ¡La comunicación entre nosotros es mi mayor motivación!

Supongo que te gusta

Origin blog.csdn.net/Zchengjisihan/article/details/130002495
Recomendado
Clasificación