正在加载图片...
高等学校计算机实践教学用书 《数据结构》实验指导书 选择单向循环链表作为存储结构模拟整个过程,并依次输出出列的各人 的编号。 实现提示] 程序运行之后,首先要求用户指定初始报数的上限值,可以n<=30,此 题中循环链表可不设头结点,而且必须注意空表和非空表的界限。如:n=8 m=4时,若从第一个人开始,设每个人的编号依次1、2、3、4.开始报数, 则得到的出列次序为48521376。 [程序实现] struct node nun struct node *next i linklist 建立链表 linklist* creat(head,n)/使n个人围成一圈,并给每个人标志号数 linklist *head t linklist *s, *p; s=malloc(sizeof(linklist) for(i=2 i<=n, i++) i s=malloc(sizeof(linklist) S->num=l p->nexts return head linklist *select(head, m) linklist *head i linklist *p, *q; 1,t; p=head; t=l P-q /°q为p的前驱指针 西南科技大学计算机科学学院高等学校计算机实践教学用书 ★ 《数据结构》实验指导书 西南科技大学 计算机科学学院 10 选择单向循环链表作为存储结构模拟整个过程,并依次输出出列的各人 的编号。 [实现提示] 程序运行之后,首先要求用户指定初始报数的上限值,可以 n<=30,此 题中循环链表可不设头结点,而且必须注意空表和非空表的界限。如:n=8, m=4 时,若从第一个人开始,设每个人的编号依次 1、2、3、4…开始报数, 则得到的出列次序为 4 8 5 2 1 3 7 6。 [程序实现]: struct node { int num; struct node *next; } linklist; /*建立链表 linklist *creat(head,n)/使 n 个人围成一圈,并给每个人标志号数 linklist *head int n; { linklist *s, *p; int i; s=malloc(sizeof(linklist)); head=s; s->num=1; p=s; for(i=2;i<=n;i++); { s=malloc(sizeof(linklist)); s->num=i; p->next=s; p=s; } p->next=head; return head; } linklist *select(head,m) linklist *head; int m; { linklist *p , *q; int i, t; p=head;t=1; p=q; /*q 为 p 的前驱指针
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有