#include <stdio.h>
#include <stdlib.h>
struct Node{
int data;
struct Node * next;
}Node;
int main(void)
{
int a[] = {4,7,5,9,3,2,6,1,8};
struct Node * NodeTemp = NULL;
struct Node * m_Head = NULL;
struct Node * m_pre = NULL;
for(int i=0;i<9;i++){//构造循环列表
NodeTemp = (struct Node *)malloc(sizeof(Node));
NodeTemp->data = a[i];
NodeTemp->next = NULL;
if(m_Head==NULL){
m_Head = m_pre = NodeTemp;
}
else{
m_pre->next = NodeTemp;
m_pre = NodeTemp;
}
}
m_pre->next = m_Head;
printf("please input first record :\n");
int record = 0;
scanf("%d",&record);
int N = 9;
while (N--)
{
record = record-1;//因为本身也算是1所以循环少一次
while (record--)
{
m_Head = m_Head->next;//找到节点
}
printf("%d ",m_Head->data);//输出值
record = m_Head->data;//保存值
NodeTemp = m_Head;//找到节点的前节点 因为我们要删掉找到得节点
while(NodeTemp->next!=m_Head){
NodeTemp = NodeTemp->next;
}
NodeTemp->next = NodeTemp->next->next;
free(m_Head);//删除
m_Head = NodeTemp->next;//从新开始
}
}
循环列表都忘了 写了好久。囧