003 cabezal de impresión de la lista de cola
título Descripción
Introducir una lista, devolviendo una lista secuencial desde la cola hasta la cabeza de ArrayList.
tema de análisis
Proporciona la lista de títulos es unidireccional, sólo el siguiente puntero, es decir, solamente se accede desde principio a fin. Asunto pidió que regresara en orden desde el extremo de la cabeza de un ArrayList, similar a la forma de pensar "último en salir".
La resolución de problemas
Solución ordinaria: Pila
Usando C ++ pila STL en la aplicación del método. Los pasos principales
- Recorrido de la lista almacenada en los valores de nodo definido pila pila;
- Acceso elemento superior, en variables del vector, apilar las variables de pila (C ++ de pila en el
pop()
valor de retorno de la función no está disponible); - las variables del vector de retorno.
código
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
vector<int> v;
stack<int> s;
while(head != NULL){
s.push(head->val);
head = head->next;
}
while(!s.empty()){
v.push_back(s.top());
s.pop();
}
return v;
}
};
solución recursiva
Vector define las variables globales, sistema que utiliza "pila" para completar la salida.
código
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> v;
vector<int> printListFromTailToHead(ListNode* head) {
if(head != NULL){
printListFromTailToHead(head->next);
v.push_back(head->val);
}
return v;
}
};
Violencia Solución: STL pura
C ++ utilizando el método STL ofertas violencia para resolver
código
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
vector<int> v;
while(head != NULL){
v.push_back(head->val);
head = head->next;
}
vector<int>::reverse_iterator riter; //反向迭代器
return vector<int>(v.rbegin(),v.rend());
}
};
Más ideas para la solución combinada a un problema de pensamientos personales y todo el mundo Web pesos pesados, y la discusión de bienvenida con la corrección.