typedef listnode *linklist;
void jose(linklist head,int s,int m) {linklist k1,pre,p; int count=1; pre=NULL;
k1=head; /*k1为报数的起点*/ while (count!=s) /*找初始报数起点*/ {pre=k1;
k1=k1->next; count++; }
while(k1->next!=k1) /*当循环链表中的结点个数大于1时*/ { p=k1; /*从k1开始报数*/ count=1;
while (count!=m) /*连续数m个结点*/ { pre=p; p=p->next; count++; }
pre->next=p->next; /*输出该结点,并删除该结点*/ printf(\"%4d\ free(p);
k1=pre->next; /*新的报数起点*/ }
printf(\"%4d\输出最后一个结点*/ free(k1); }
main()
{linklist head,p,r; int n,s,m,i; printf(\"n=\"); scanf(\"%d\ printf(\"s=\");
scanf(\"%d\ printf(\"m=\ scanf(\"%d\
if (n<1) printf(\"n<0\"); else {/*建表*/
head=(linklist)malloc(sizeof(listnode)); /*建第一个结点*/ head->data=n; r=head;
for (i=n-1;i>0;i--) /*建立剩余n-1个结点*/ { p=(linklist)malloc(sizeof(listnode)); p->data=i; p->next=head; head=p; }
r->next=head; /*生成循环链表*/ jose(head,s,m); /*调用函数*/ } }
3、本题要求建立有序的循环链表。从头到尾扫描数组A,取出A[i](0<=i h=(LinkedList)malloc(sizeof(LNode));//申请结点 h->next=h; //形成空循环链表 for(i=0;i
Copyright © 2019- azee.cn 版权所有 赣ICP备2024042794号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务