1.priority_queue <Tipo, Contenedor, Funcional>
priority_queue <int, vector <int>, mayor <int>> q;
// Montón de raíz pequeña, es decir, el elemento principal más pequeño;
prioridad_queue <int> // Por defecto, montón de raíz grande, es decir El elemento principal es el más grande. (Actualizaciones subsiguientes)
2.deque] [deque
interfaces de vector similar (de un solo sentido de inserción y deleción)
c.pop_back () pop el último elemento
c.push_back (elem) insertar un elemento de detrás de
la deque (inserción bidireccional y supresión)
c.push_front (elem) Insertar un elemento desde el frente
c.pop_front (elem) Eliminar el elemento más frontal
c.clear () Borrar todos los elementos en la cola
c.size () Devuelve el número de elementos en la cola
3.
stack stack <int> s;
stack <cadena> s;
s.push (x) sin valor de retorno, inserte el elemento x en la
pila
s.pop (); desapilar , sin valor de retorno s.top (); tome el elemento superior de la pila, devuelva el elemento superior
s.empty (); Juzgue si la pila está vacía, devuelva 1 si está vacía; de lo contrario, devuelva 0
s.size (); devuelva el número de elementos
en la pila No hay función para proporcionar una operación vacía en la pila, pero puede realizar indirectamente la pila vacía,
while (! s.empty ()) s.pop (); La
clase de plantilla de pila requiere 2 parámetros de plantilla, uno para el tipo de elemento y otro para el tipo de contenedor, pero solo es necesario el tipo de elemento. Cuando el tipo de contenedor predeterminado, el valor predeterminado Para deque.
Contenido
1. Introducción adyacencia matriz tiene que calcular
allí matriz de adyacencia 2. Descripción del código en la Figura
3. La matriz de adyacencia de un código fuente completo gráfico dirigido
favor indique la fuente: http: //www.cnblogs.com/skywang12345/
Más Contenido: Catálogo de la serie de estructura de datos y algoritmos
Introducción del
gráfico dirigido de matriz de adyacencia El gráfico dirigido de matriz de adyacencia es un gráfico dirigido expresado por matriz de adyacencia.
bubuko.com, la
imagen de tela arriba de G2 contiene 7 vértices "A, B, C, D, E, F, G" y contiene "<A, B>, <B, C>, < B, E>, <B, F>, <C, E>, <D, C>, <E, B>, <E, D>, <F, G> "Un total de 9 bordes.
La matriz a la derecha de la figura anterior es un diagrama esquemático de la matriz de adyacencia de G2 en la memoria. A [i] [j] = 1 significa que el i-ésimo vértice del j-ésimo vértice es un borde, A [i] [j] = 0 significa que no es un borde, y A [i] [j] significa el El valor en la fila i y la columna j; por ejemplo, A [1,2] = 1, que indica que el primer vértice (es decir, el vértice B) al segundo vértice (C) es un borde.
Descripción del código del gráfico dirigido por la matriz de adyacencia
1. Definición básica
bubuko.com, botón de tela
#define MAX 100
class MatrixDG {
privado:
char mVexs [MAX]; // conjunto de vértices
int mVexNum; // número de vértices
int mEdgNum;
public:
// Cree un gráfico (ingrese sus propios datos)
MatrixDG ();
// Cree un gráfico (use la matriz provista)
MatrixDG (char vexs [], int vlen, char edge [] [2], int elen);
~ MatrixDG ();
// print matrix queue graph
void print ();
private:
// lee un carácter de entrada
char readChar ();
// devuelve la posición de ch en mMatrix matrix
int getPosition (char ch);
};
bubuko.com , Bubu hebilla
MatrixDG no es la estructura de matriz de adyacencia correspondiente a la figura.
mVexs se usa para guardar vértices, mVexNum es el número de vértices, mEdgNum es el número de aristas; mMatrix es una matriz bidimensional utilizada para guardar información de la matriz. Por ejemplo, mMatrix [i] [j] = 1, significa que "vértice i (es decir, mVexs [i])" y "vértice j (es decir, mVexs [j])" son puntos adyacentes, y el vértice i es el punto de partida, el vértice j es Terminar
2. Crear una matriz
Aquí hay dos métodos para crear una matriz. Uno usa datos conocidos y el otro requiere que el usuario ingrese los datos manualmente.
2.1 Crear un gráfico (usando la matriz provista)
bubuko.com, botón de tela
/ *
* Crear un gráfico (usando la matriz provista)
*
* Descripción del parámetro:
* vexs-vertex array
* vlen-length of vertex array
* edge-edge array
* elen-length of edge array
* /
MatrixDG :: MatrixDG (char vexs [], int vlen, char edge [ ] [2], int elen)
{
int i, p1, p2;
// inicializa el "número de vértices" y "número de aristas"
mVexNum = vlen;
mEdgNum = elen;
// inicializa los "vértices"
para (i = 0; i < mVexNum; i ++)
mVexs [i] = vexs [i];
// inicializa el "borde"
para (i = 0; i <mEdgNum; i ++)
{
// lee el vértice inicial y el vértice final del borde
p1 = getPosition (bordes [i] [0]);
p2 = getPosition (bordes [i] [1]);
mMatrix [p1] [p2] = 1;
}
}
bubuko.com,
la función de esta función es crear una matriz de adyacencia A la gráfica. De hecho, el gráfico dirigido creado por este método es el gráfico anterior G2. Su método de llamada es el siguiente:
bubuko.com, bubuko
char vexs [] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
bordes de char [] [2] = {
{'A', 'B'},
{'B', 'C'},
{'B', 'E'},
{'B', 'F'},
{'C', 'E'} ,
{'D', 'C'},
{'E', 'B'},
{'E', 'D'},
{'F', 'G'}};
int vlen = sizeof (vexs) / sizeof (vexs [0]);
int elen = sizeof (bordes) / sizeof (bordes [0]);
MatrixDG * pG;
pG = nuevo MatrixDG (vexs, vlen, bordes, elen);
bubuko.com, botón de tela
2.2 Cree un gráfico (ingrese su propio)
bubuko.com, botón de tela
/ *
* Cree un gráfico (ingrese sus propios datos)
* /
MatrixDG :: MatrixDG ()
{
char c1, c2;
int i, p1, p2;
// Ingrese el número de vértices "Y" número de aristas
cout << "ingrese el número de vértice:";
cin >> mVexNum;
cout << "número de borde de entrada:";
cin >> mEdgNum;
if (mVexNum <1 || mEdgNum <1 || (mEdgNum> (mVexNum * (mVexNum-1))))
{
cout << "error de entrada: parámetros no válidos" << endl;
regreso ;
}
// 初始化 "顶点"
para (i = 0; i <mVexNum; i ++)
{
cout << "vértice (" << i << "):";
mVexs [i] = readChar ();
}
// 初始化 "边"
para (i = 0; i <mEdgNum; i ++)
{
// 读取 边 的 起始 顶点 和 结束 顶点
cout << "edge (" << i << "):";
c1 = readChar ();
c2 = readChar ();
p1 = getPosition (c1);
p2 = getPosition (c2);
if (p1 == - 1 || p2 == - 1)
{
cout << "error de entrada: borde no válido!" << endl;
regreso ;
}
mMatrix [p1] [p2] = 1;
}
}