




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第十一讲结构例:跳马。依下图将每一步跳马之后的位置(x,y)放到一个“结点”里,再用“链子穿起来”,形成一条链,相邻两结点间用一个指针将两者连到一起。依上图有7个结点结构——是一种构造类型的数据类型。结构是数目固定、类型不同的若干变量的有序集合。结构与数组的区别在于结构内允许有不同类型的数据。 结构的定义,格式如下: 例如跳马棋局可如下定义8 4//结构1.c #include<stdio.h> //预编译命令 #definenull0 //定义空指针常量 structTM //定义结构TM { intx,y; //整型变量x,y structTM*next; //指向TM结构的指针 }; voidmain() //主函数 { //主函数开始 inti; //声明整型变量 //声明TM结构n1~n7,结构指针head,p structTMn1,n2,n3,n4,n5,n6,n7,*head,*p;//分别对TM结构n1~n7中的x,y赋值 n1.x=0;n1.y=0; n2.x=1;n2.y=2; n3.x=2;n3.y=4; n4.x=4;n4.y=4; n5.x=6;n5.y=4; n6.x=7;n6.y=2; n7.x=8;n7.y=4; //head赋值为n1,即head指向n1 head=&n1; //n1~n7构成链表 n1.next=&n2; n2.next=&n3; n3.next=&n4; n4.next=&n5; n5.next=&n6; n6.next=&n7; //n7的next指针赋值为空指针 n7.next=null; p=head; //p赋值为head,即p指向head所指的内容 i=1; //i赋值为1 do //直到型循环 { //循环体开始 //输出结点信息 printf("结点%d:x=%d,y=%d\n",i,p->x,p->y); p=p->next; //p指向下一个结点 i=i+1; //计数加1 }while(p!=null); //未到达链表尾部,则继续循环 } //主函数结束用结构数组,利用键盘输入结点中的数据。 重点看 scanf(“%d”,&a); n[i].x=a; 结构数组,数组中的元素为结构类型的数据,如n[8]voidmain() //主函数 { //主函数开始 inti,a,b; //声明整型变量i,a,b //声明TM型结构数组n[8],TM结构指针head,p structTMn[8],*head,*p; for(i=1;i<=7;i=i+1) //循环 { //循环体开始 printf("输入n[%d]的x\n",i); //提示输入第i个结构的x值 scanf("%d",&a); //输入a n[i].x=a; //将a的值赋给结构n[i]的元素x printf("输入n[%d]的y\n",i); //提示输入第i个结构的y值 scanf("%d",&b); //输入b n[i].y=b; //将b的值赋给结构n[i]的元素y } //循环体结束 head=&n[1]; //链表头部指向n[1] for(i=1;i<=6;i=i+1) //将结构数组n形成链表 { n[i].next=&n[i+1]; //n[i]的next指针指向下一个结构n[i+1] } n[7].next=null; //链表尾部指向空 p=head; //p指向链表头部head i=1; //i赋值为1 do //直到型循环,用于输出链表内容 { //循环体开始 //输出结点内容 printf("结点%d:x=%d,y=%d\n",i,p->x,p->y); p=p->next; //p指向相邻的下一个结点 i=i+1; //计数i加1 }while(p!=null); //未到链表尾部,则继续循环 } //主函数结束下面的程序与上面的程序区别仅在 scanf(“%d”,&(n[i].x)); 去替换 scanf(“%d”,&a); n[i].x=a;voidmain() //主函数 { //主函数开始 inti,a,b; //声明整型变量i,a,b //声明TM型结构数组n[8],TM结构指针head,p structTMn[8],*head,*p; for(i=1;i<=7;i=i+1) //循环 { //循环体开始 printf("输入n[%d]的x\n",i); //提示

ys****39
实名认证
内容提供者


最近下载