#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int key;//密码
int num;//编号
struct Node *next;//指向下一个节点
}
Node, *Link;
void InitList(Link &L) //创建一个空的链表{
L = (Node *)malloc(sizeof(Node));
if (!L) exit(1);
L->key = 0;
L->num = 0;
L->next = L;
}
void Creatlinklist(int n, Link &L) //初始化链表{
Link p, q;
q = L;
for (int i = 1; i <= n; i++)
{
p = (Node *)malloc(sizeof(Node));
if (!p) exit(1);
scanf("%d", &p->key);
p->num = i;
L->next = p;
L = p;
}
L->next = q->next;
free(q);
}
Link Locate_m(Link &p, int m)//找到第m个
{
Link q;
for (int j = 1; j<m; j++)
p = p->next;
q = p->next;
m = q->key;
return q;
}
void Delete_m(Link &L, Link p, Link q)//删除第m个{
p->next = q->next;
free(q);
}
void main()
{
Link L, p, q;
int n, m;
L = NULL;
InitList(L);//构造出一个只有头结点的空链表
printf("请输入初始密码人数每个人的密码:\n");
scanf("%d", &m);//初始密码为m
scanf("%d", &n);//
Creatlinklist(n, L);//构建
p = L;
for (int i = 1; i <= n; i++)
{
q = Locate_m(p, m);//找到第m个
printf("%d", q->num);
Delete_m(L, p, q);//删除第m个
}
system("pause");
}。