背景
最近做题,这道题求入度,不是很难。但是有一些知识点没有理顺,这里做一个汇总。
基础知识点
这里总结一下,我遇到的一些问题,多是和基础知识有关,不过还是要总结。温故知新,常读常新,受益无穷。
1,结构体定义问题
typedef struct 与struct的区别:
typedef 就是给结构体申请一个别名,在在申请变量时就可以省去struct关键词。
struct Student stu//不加typedef
Student stu//加了typedef
BTNode与*btnode
typedef struct BTNode
{
......
}BTNode,*btnode
两者都是二叉树的别名,*btnode是申请二叉树节点。
其实btnode p就等价于BTNode *p;因此为了记忆方便,可以只写BTNode ,这也与int *p等一脉相承。
typedef struct BTNode
{
......
}BTNode
2,什么时候开辟空间
建立指针,指针指向开辟的空间。
BTNode *bt;
bt=(BTNode*)malloc(sizeof(BTNode));
3,".“与”->"的区别;函数传入Graph g和传入Graph *g又分别如何调用?
结构体元素中非指针用点,指针用箭头。
图中:
g1.adjlist[0]不是指针故后面用点引出下属元素。
g1.adjlist[0].firstarc是指针,故用箭头引出下属元素。

函数传入Graph g1
g1后用点

函数传入Graph *g1
g1后用->

求入度
int count(AGraph *g,int k)
{
ArcNode *p;
int i,sum;
sum=0;
for(i=0;i<g->n;++i)//遍历所有节点
{
p=g->adjlist[i].firstrarc;
while(p!=NULL)//对某一节点的所有邻接点遍历,从改点出发,如果有指向k节点的,就sum++,并停止遍历
{
if(p->adjvex==k)
{
++sum;
break;
}
p=p->nextarc;
}
}
return sum;
}

3058

被折叠的 条评论
为什么被折叠?



