Exemplo n.º 1
0
void CircleList_joseph(CircleList* list,int start,int n)
{

    if(list !=NULL)
    {
        int i=0;
        CircleList_Reset(list);

        for(i=0;i<start;i++)
        {
            CircleList_Next(list);

        }

        while(0<CircleList_Length(list))
        {
            int j=0;
            struct Value* show = (struct Value*)CircleList_DeleteNode(list,  CircleList_Current(list));
            printf("%d\n", show->v);

            for(j=0;(j<n) &&( CircleList_Current(list) !=NULL);j++)
            {

                CircleList_Next(list);
            }

        }

    }
}
Exemplo n.º 2
0
int main(int argc, const char * argv[]) {
    CircleList *list = CircleList_Create();
    Student stu1, stu2, stu3, stu4, stu5, stu6, stu7, stu8;
    stu1.id = 1;
    stu2.id = 2;
    stu3.id = 3;
    stu4.id = 4;
    stu5.id = 5;
    stu6.id = 6;
    stu7.id = 7;
    stu8.id = 8;
    CircleList_Insert(list, (CircleListNode *)&stu1, 0);
    CircleList_Insert(list, (CircleListNode *)&stu2, 1);
    CircleList_Insert(list, (CircleListNode *)&stu3, 2);
    CircleList_Insert(list, (CircleListNode *)&stu4, 3);
    CircleList_Insert(list, (CircleListNode *)&stu5, 4);
    CircleList_Insert(list, (CircleListNode *)&stu6, 5);
    CircleList_Insert(list, (CircleListNode *)&stu7, 6);
    CircleList_Insert(list, (CircleListNode *)&stu8, 7);
    printf("start:\n");
    for (int i = 0; i < CircleList_Length(list); i++) {
//        CircleListNode *node = CircleList_Get(list, i);
        Student *stu = (Student *)CircleList_Next(list);
        printf("--->%d",stu->id);
    }
    //重置游标
    CircleList_Reset(list);
    printf("\nend:\n");
    while (CircleList_Length(list)) {
        Student *node = NULL;
        for (int j = 1; j < STEP; j ++) {
           CircleList_Next(list);
        }
        node = (Student *)CircleList_Current(list);
        printf("--->%d",node->id);
        CircleList_DeleteNode(list, (CircleListNode *)node);
    }
    putchar('\n');
    CircleList_Destroy(list);
    return 0;
}