选猴王-循环链表

    xiaoxiao2021-03-25  103

    #include <stdio.h> #include <stdlib.h> typedef struct linklist //定义链表节点类型 { int data; struct linklist *next; }linklist; int main(void) { int i,n,k,m,total; linklist *head,*p,*s,*q; printf("猴子总数:"); scanf("%d",&n); head = (linklist*)malloc(sizeof(linklist)); p = head; p->data = 1; p->next = p; //初始化循环链表 for(i=2; i<=n; ++i) { s = (linklist*)malloc(sizeof(linklist)); s->data = i; s->next = p->next; p->next = s; p = p->next; //移到下一个点 } p = head; q = head; total = n; while(total != 1) { for(i=1; i<3; ++i) { p = p->next; } printf("[%d] out\n",p->data);//打印要删除的结点 while(q->next != p) { q = q->next; } s = p; //保存要删除的结点 q->next = p->next; //删除结点 p = p->next; free(s); total--; } printf("猴王是第[%d]只\n",p->data); return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-20018.html

    最新回复(0)