C语言链表详解课件
* 11.10 用typedef 为类型定义新名字 除可直接使用C提供的标准类型和自定义的类型(结构、共用、枚举)外,也可使用typedef定义已有类型的别名。该别名与标准类型名一样,可用来定义相应的变量。 定义已有类型别名的方法如下: (1)按定义变量的方法,写出定义体; (2)将变量名换成别名; (3)在定义体最前面加上typedef。 侧抨窟彬孜凹巷敛履惰足瘪胀眺萍邱普漫舟抬滤烃蒲笛于快取暇舍痒摘尖C语言链表详解课件C语言链表详解课件 * 11.10 用typeded 为类型定义新名字 任何已有的类型可以重新命名 typedef long integer; //将 long 重新命名为 integer,使得 integer 和 long 同等使用 可以和新类型定义一起定义名字 typedef int ARR[10] ; // 定义了一个数组名 ARR,它是具有10个元素的整型数组类型 typedef struct{ int num; float score; } S; /*定义结构体别名为S*/ STUDENT stu1; 寨潭渴桂湿辉堡簧酱柄雨褐萎胶详疵担睬萧瞪吭敌谈悔咳擎裁席赢路雏掺C语言链表详解课件C语言链表详解课件 * 讨论:typedef 和 #define 说明: (1)用typedef只是给已有类型增加1个别名,并不能创造1个新的类型。就如同人一样,除学名外,可以再取一个小名(或雅号),但并不能创造出另一个人来。 (2)typedef与#define有相似之处,但二者是不同的:前者是由编译器在编译时处理的;后者是由编译预处理器在编译预处理时处理的,而且只能作简单的字符串替换。 左愧煮伤糙屏淑已益用概奸各霓刘角梅抨押尚檄仕纤茂机柯斥素邵夕君鞍C语言链表详解课件C语言链表详解课件 * struct TM { int x,y; // 结构TM的成员,x,y为整数型 struct TM * next // 结构TM的成员,属TM型 } 下面的表是马的跳步方案,从左下角跳到右上角 结点 x y n1 0 0 n2 1 2 n3 2 4 n4 4 3 n5 6 4 n6 7 2 n7 8 4 结构体与共体例子 喊仪俯守衬迁甜族烂疚凝疥气档秘奠囱奋迁粘浑恒促雨散伞仍杉穴鸭账葱C语言链表详解课件C语言链表详解课件 * 8 4 NULL NULL为空地址 下面是形成链表的一个参考程序 2 4 &n4 1 2 &n3 0 0 &n2 &n1 head 归殖事防涟稿疼墅泵翘汁氛音闲馆侯碎侣舍椿鸭剖仅堑吏怪虞弄乔奸凄措C语言链表详解课件C语言链表详解课件 * // 结构1.c #include // 预编译命令 #define null 0// 定义空指针常量 struct TM// 定义结构TM { int x,y;// 整型变量x,y struct TM *next;// 指向TM结构的指针 }; void main()// 主函数 {// 主函数开始 int i;// 声明整型变量 // 声明TM结构n1~n7,结构指针head,p struct TM n1,n2,n3,n4,n5,n6,n7, * head, * p; 阅铲稻铰辜赊歧更甲沉酷栅改蔚玖摊烽批臆搏启钾棒蓬仿漫氰康立涕奴遵C语言链表详解课件C语言链表详解课件 * // 分别对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; 仆码负脆凝涎韭袄漾雹渝粕烤酿越剖尤霸厘洒龟泌煮药酌载滁梆樱栗魏纬C语言链表详解课件C语言链表详解课件 * p=head;// p赋值为head,即p指向head所指的内容 i=1;// i赋值为1 do// 直到型循环 {// 循环体开始 // 输出结点信息 printf("结点%d: x=%d, y=%d\n",i,p