这段代码nex的作用是什么
#include <iostream>#include <cstring>
using namespace std;
const int N = 7; // ͼÖнڵãÊýÄ¿
const int M = 100; // ͼÖбߵÄ×î´óÊýÁ¿
int h; // ½ÚµãµÄÁÚ½ÓÁ´±íµÄÍ·Ö¸Õë
int e; // ±ßµÄÖÕµã
int nex; // ÿһÌõ±ßµÄÏÂÒ»Ìõ±ßµÄ±àºÅ
int idx = 0; // ±ßË÷Òý
void add(int a, int b) {
e = b;
nex = h;
h = idx;
idx++;
}
int main() {
memset(h, -1, sizeof(h)); // ³õʼ»¯ÁÚ½Ó±íΪ¿Õ
// Ìí¼Ó±ß
add(1, 2);
add(1, 5);
add(1, 3);
add(2, 3);
add(3, 4);
add(4, 5);
add(5, 1);
cout << "챐: " ;
for (int i=0;i<N;i++)
{
cout<< i << " ";
}
cout << endl;
cout << "h: " ;
for (int i=0;i<N;i++)
{
cout<< h << " ";
}
cout << endl;
cout << "e: " ;
for (int i=0;i<N;i++)
{
cout<< e << " ";
}
cout << endl;
cout << "nex: ";
for (int i=0;i<N;i++)
{
cout<< nex << " ";
}
// // ´òÓ¡ÁÚ½Ó±í
// for (int i = 1; i <= N; i++) {
// cout << "h[" << i << "] -> ";
// for (int j = h; j != -1; j = nex) {
// cout << e << " -> ";
// }
// cout << endl;
// }
return 0;
}
h和e我基本明白了,但是nex还是不理解 nex数组是链式前向星的一个重要组成部分,它的作用是记录每个节点的下一个节点在e数组中的下标。在add函数中,每次添加一条边时,会将该边的下一个节点设置为当前节点的头节点,也就是h数组中的值。而每次添加完边之后,idx会自增1,也就是说nex数组中的下一个空位就是idx。因此,nex数组的更新过程就是将新添加的边的下一个节点设置为当前节点的头节点,也就是nex = h。这样,通过nex数组,我们就可以方便地遍历每个节点的所有邻居节点。
页:
[1]