今日任务:
1.邻接链表代码
2.C++第三章看完
3.函数与指针第二次复习
一,函数
函数声明的作用:是把有关函数的信息(函数名,函数类型,函数参数的个数与类型)通知编译系统,以便在编译系统对程序进行译时,在进行到main函数调用这个函数时知道他们是函数而不是变量或其它对象。
(1)一个C程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。
(2)一个源程序文件由一个或多个函数以及其他有关内容组成。
(3)用户角度,函数分为库函数和用户自己定义的函数。
(4)函数形式分为,无参函数和有参函数。
定义函数:
(1)定义函数名字
(2)指定函数返回值的类型
(3)指定函数参数的名字和类型,PS无参函数不需要。
函数返回值的类型应和函数类型一致,如果函数不要返回值则定义函数类型为void。PS函数类型决定返回值类型。
二,邻接链表
#include<stdio.h>
#include<stdlib.h>
#define Max 100
typedef struct EdgeNode
{
int adjvertex;
int weight;
struct EdgeNode *next;
}EdgeNode;
typedef struct VertexNode
{
char data;
EdgeNode *firstedge;
}VertexNode,ArtVerte[Max];
typedef struct Egraph
{
ArtVerte artVerte;
int sumVerte,sumEdge;
}Egraph;
void CreatGraph(Egraph *G)
{
int i,j,k;
EdgeNode *e;
printf("请输入结点数和边数:");
scanf("%d %d",&G->sumVerte,&G->sumEdge);
getchar();
printf("请输入结点字符:");
for(i=0;i<G->sumVerte;i++)
{
scanf("%c",&G->artVerte[i].data);
G->artVerte[i].firstedge=NULL;
}
for(i=0;i<G->sumEdge;i++)
{
printf("请输入边的坐标(j,k):");
scanf("%d %d",&j,&k);
e=(EdgeNode *)malloc(sizeof(EdgeNode));
e->adjvertex=k;
printf("请输入权值;");
scanf("%d",&e->weight);
e->next=G->artVerte[j].firstedge;
G->artVerte[j].firstedge=e;
e=(EdgeNode *)malloc(sizeof(EdgeNode));
e->adjvertex=j;
e->next=G->artVerte[k].firstedge;
G->artVerte[k].firstedge=e;
}
}
void Shuchu(Egraph *G)
{
int i;
EdgeNode *t;
for(i=0;i<G->sumVerte;i++)
{
printf("%c ",G->artVerte[i].data);
t=G->artVerte[i].firstedge;
while(t!=NULL)
{
printf("%c ",G->artVerte[t->adjvertex].data);
t=t->next;
}
printf("\n");
}
}
int main()
{
Egraph G;
CreatGraph(&G);
Shuchu(&G);
return 0;
}
三,C++第三章知识
无符号类型:
十进制数形式:第一位数是1~9;
八进制数形式:第一位是0,第二位是1~7;
十六进制数形式:前两位是0x或0X;
ps:在默认情况下,不管输入几进制的数,cout以十进制数输出。
转换成十进制数用dec
转换成八进制数用oct
转换成十六进制数用hex