
1>
要求:

效果图:



2>
要求:

效果图:

3>
要求:

效果图:

源代码:
#include <stdio.h>
#include <stdlib.h>
typedef int datatype;
typedef struct Node
{datatype data;struct Node *next;
}*LinkList;LinkList create()
{LinkList s=(LinkList)malloc(sizeof(struct Node));if(s==NULL) return NULL;s->data=0;s->next=s;return s;
}LinkList head_insert(LinkList head,int element)
{LinkList s=create();s->data=element;if(head==NULL) {head=s;}else{LinkList p=head;while (p->next!=head)p=p->next; s->next=head;head=s;p->next=head; }return head;
}LinkList rear_insert(LinkList head,int element)
{LinkList s=create();s->data=element;if(head==NULL){head=s;}else {LinkList p=head;while(p->next!=head){p=p->next;}p->next=s;s->next=head;}return head;
}LinkList head_delete(LinkList head)
{if(head==NULL) return NULL;LinkList del=head,p=head;while(p->next!=head){p=p->next;}head=head->next;p->next=head;free(del);del=NULL;return head;
}LinkList rear_delete(LinkList head)
{if(head==NULL) return NULL;LinkList del=head;while(del->next->next!=head){del=del->next;}free(del->next);del->next=head;return head;
}void output(LinkList head)
{if(head==NULL) {printf("empty!\n");return;}else {LinkList p=head;do {printf("%d ",p->data);p=p->next;}while(p!=head);}
}
int length(LinkList head)
{int len=0;if(head==NULL) return len;len+=1;LinkList p=head;do{len++;p=p->next;}while(p->next!=head);return len;
}
void sort_list(LinkList head)
{if(head==NULL) return;int len=length(head);for(int i=1;i<len;i++){LinkList p=head;for(int j=0;j<len-i;j++){if(p->data >p->next->data){datatype t=p->data;p->data=p->next->data;p->next->data=t;}p=p->next;} }
}
void joseph(LinkList head,int n, int m)
{if(head==NULL) return ;LinkList p=head;for(int i=0;i<n;i++){for(int j=0;j<m-2;j++){p=p->next;}LinkList del=p->next;printf("%d ",del->data);p->next=del->next;free(del);del =NULL;p=p->next;}puts("");}int main(void)
{int n,element;LinkList head=NULL;printf("please enter n: ");scanf("%d",&n);for(int i=0;i<n;i++)
{ printf("please enter %d element: ",i+1);scanf(" %d",&element);// head=head_insert(head,element);head=rear_insert(head,element);
}
output(head);
puts("");// printf("After head delete : \n");
// head=head_delete(head);// printf("After rear delete : \n");
// head=rear_delete(head);int m;
printf("enter m : ");
scanf(" %d",&m);
joseph(head,n,m);// output(head);
// puts("");// sort_list(head);
// printf("After sort ----");
// output(head);
// puts("");return 0;
}