帮忙看看 结构体元素表示的意思

来源:百度知道 编辑:UC知道 时间:2024/06/21 11:38:25
//这个是二分图匹配的函数 传入的是个邻接表list 请问结构体中next 是指像什么的
#include <string.h>
#define MAXN 310
#define _clr(x) memset(x,0xff,sizeof(int)*MAXN)
struct edge_t{
int from,to;
edge_t* next; //就这个东西 干嘛的
};
int hungary(int m,int n,edge_t* list[],int* match1,int* match2){
int s[MAXN],t[MAXN],p,q,ret=0,i,j,k;edge_t* e;
for (_clr(match1),_clr(match2),i=0;i<m;ret+=(match1[i++]>=0))
for (_clr(t),s[p=q=0]=i;p<=q&&match1[i]<0;p++)
for (e=list[k=s[p]];e&&match1[i]<0;e=e->next)
if (t[j=e->to]<0){
s[++q]=match2[j],t[j]=k;
if (s[q]<0)
for (p=j;p>=0;j=p)
match2[j]=k=t[j],p=match1[k],match1[k]=j;
}
return ret;
}
函数的实参为什么是 数组 如果是你那样解释 指针就可以了呀
我靠 一群混饭吃的

下一个 edge_t 邻接表 结构

edge_t* next 与 edge_t next[] 等价

edge_t* next; //这个是记录链表中下一个数据项地址的,也就是指向下一个数据项,只有每个数据项里都有这个指针才能建立一个链表,因为指向的数据项与自己相同所以也就只能使用与声明自己时的结构名(struct edge_t)来声明指针。

函数参数是指针数组,只不过这里数组是结构体的数组,数组里的值记录的是指向struct edge_t类型数据的指针。

edge_t* next;
就是一个指针嘛,这个数据结构就是一个线性链表

你说的没错数组在C里面运行的实意就是通过指针方式来运行的
但数组也有它的不可替代的好处啊
edge_t* next 与 edge_t next[] 等价