El título de la lista enlazada del libro del rey: hay una lista enlazada L con un nodo principal, de modo que sus elementos están en orden creciente.

La respuesta es usar el método de complemento de encabezado, que fue un poco tortuoso la primera vez que lo leí. La respuesta complementaria es copiar la lista vinculada en una matriz y luego ordenarla con un algoritmo de clasificación con una complejidad de tiempo de O (nlogn), que es fácil de entender.

Aquí, me gustaría registrar mi propio método de escribir este tema.

ideas

inserte la descripción de la imagen aquí

  1. Mi idea es asociar primero cuál de los algoritmos de clasificación de matrices se puede aplicar a listas vinculadas
  2. Lo primero que me viene a la mente es la ordenación de burbujas y la ordenación rápida (para mí), pero ninguna de ellas funciona bien en listas enlazadas.
  3. Pensé en otro método: clasificación por selección, primero señalar el primer nodo con un puntero, luego encontrar el más pequeño de todos los nodos y, después de encontrarlo data, intercambiarlo con los datos del nodo señalado por el puntero. Por lo tanto, los datos más pequeños se colocan en el primer nodo.
  4. Mueva el puntero hacia atrás, busque el elemento más pequeño a partir del segundo nodo, intercámbielo, etc.
  5. Es decir: cada vez que se intercambian los datos del nodo más pequeño con los datos del elemento apuntado por el puntero

escribe

void sort_link(LinkList &L){
    
    
	ElemType min,temp;
	LinkList p,q;
	mindex = NULL;// mindex初始化为空 
	p = L->next;
	while(p->next != NULL) {
    
    
		// 最多被比较到倒数第二个节点就够了
		min = p->data;// 初始的最小值,每次也都是p->data 
		q = p->next;
		while( q!= NULL) {
    
    // 一直到最后一项要和min去比较 
			 if(q->data <min){
    
    
			 	min = q->data;
			 	mindex = q;
			 }
			 q = q->next;
		}// 最里层的while循环结束,意味着找到了最小的data
		
		if(mindex != NULL){
    
    
		//如果mindex不为空,则表示之后的节点有比p->data更小的,因此进行交换
		temp = p->data;
		p-data = min;
		mindex->data = temp;// 记住这里是mindex,而不是q
		//因为跳出循环,q就等于NULL了 
		}
		
		// p指针再后移,进行下一轮内循环
		p = p->next; 
	}
}

Supongo que te gusta

Origin blog.csdn.net/weixin_47505105/article/details/123538667
Recomendado
Clasificación