北京理工大学《C语言程序设计4》课件-第十章 结构、联合与枚举类型.pptVIP

  • 1
  • 0
  • 约2.55万字
  • 约 84页
  • 2022-12-07 发布于北京
  • 举报

北京理工大学《C语言程序设计4》课件-第十章 结构、联合与枚举类型.ppt

* * * * 用链表的方法对约瑟夫问题进行编程 算法分析与设计 用链表解决约瑟夫问题,首先定义链表数据结构 struct node { int no; struct node * next; }; 1 2 29 30 ... head 表头节点 数据节点 数据节点 数据节点 数据节点 §10-8 链表基础-举例 共 83 页 第 * 页 main( ) { int i, k; struct node *head, *p, *q; head = (struct node *)malloc(sizeof(struct node)); head-no = -1; head-next = head; for ( i=30; i0; i-- ) /* 生成循环链表 */ { p = (struct node *)malloc(sizeof(struct node)); p-next = head-next; p-no = i; head-next = p; } printf(\nThe original circle is :); while ( p-next != head ) /* 循环链跳过表头结点 */ p = p-next; p-next = head-next; /* p 指向 30 */ for ( i=0; i15; i++ ) { for ( k=1 ; k9 ; k++ ) p = p-next; q = p-next; /* p 的下一个结点是要出列的结点 */ p-next = q-next; /* 循环链表跳过要出列的结点 */ printf(“%3d”, q-no); /* 输出 q 结点的编号 */ free(q); /* 释放 q 结点 */ } } §10-8 链表基础-举例 共 83 页 第 * 页 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 若是5个学生的数据,则在完成初始化操作后,数组的关系如下: stu数组 01 02 03 04 05 90 95 85 73 92 p数组 p[0] p[1] p[2] p[3] p[4] 算法分析: 程序中使用结构数组stu,指针数组p; 程序在结构数组和指针数组之间建立指针关系。 程序中只用对指针数组进行排序,就可以实现对指向的成绩的排序(选择排序)。 §10-3 结构指针 stu数组 01 02 03 04 05 90 95 85 73 92 p数组 p[0] p[1] p[2] p[3] p[4] 共 83 页 第 * 页 §10-3 结构指针 #define STNUM 5 ...... main ( ) { struct stuinf *ptemp, *p[STNUM]; int i,j,k,sum=0; for ( i=0; i=STNUM-1; i++ ) { scanf (%d%d, stu[i].stid,stu[i].score); p[i] = stu[i]; sum += stu[i].score; } for ( i =0; i = STNUM-2; i++ ) { k = i; for ( j = i; j = STNUM-1; j++ ) if ( p[k]-score p[j]-score ) k=j; if ( k != i ) { ptemp = p[i]; p[i]=p[k]; p[k]=ptemp; } } for ( i=0; i=STNUM-1; i++ ) printf(%d,%d\n, (*p[i]).stid, p[i]-score); printf (average score = %d\n, sum/STNUM); } 共 83 页 第 * 页 结构与函数的关系 向函数中传递结构的成员; 在函数之间传递整个结构; 向函数传递结构的地址(指针)。 向函数中传递结构的成员 在函数中传递结构成员的方法与传递简单变量的方法相同: 在函数之间传递成员的值; 在函数之间传递成员的地址。 实例 printf(%d, man.birthday.year); 传递结构成员的值 scanf(%d, man.birt

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档