import java.util.Scanner;
public class Main {
static class Node {
int data;
Node next;
Node(int v) {
data = v;
}
}//成员类,代表节点,类似于C++语言中的结构体
static Node head = new Node(1);//头节点单列出来
static void init() {
Node x = head;
for (int i = 1; i <= 10; i++) x = (x.next = new Node(i));//建立单向链表
x.next = null;
}
static void del(int x) {
Node Befor = head; //用于存放当前节点的前驱,因为单链表单向遍历,我们不能从下一个找到上一个
for (Node T = head.next; T != null; T = T.next) //链表的遍历常用写法
{
if (T.data == x) //找到要的那个数了
{
Node temp = T; //先临时保存结点
Befor.next = T.next; //将节点从链表上摘除
return; //删除结束后,结束函数。
}
Befor = T; //前驱改变
}
}
static void insert(int x) {
Node temp = new Node(x);
temp.next = head.next;
head.next = temp;
}
static void show(int i) {
// System.out.println("这是第" + i + "次操作");//提交代码时删掉这一行
for (Node T = head.next; T != null; T = T.next) //链表的遍历常用写法
{
System.out.print(T.data + " ");
}
System.out.println(" ");
}
public static void main(String[] args) {
int N;
Scanner in = new Scanner(System.in);
init();
N = in.nextInt();
// show(0);//提交代码时删掉这一行
for (int i = 0; i < N; i++) {
int x = in.nextInt();
del(x);
insert(x);
show(i);
}
}
}
import java.util.Scanner;
public class Main
{
static class Node
{
int val;
Node next;
Node(int v)
{
val = v;
}
} //成员类,代表节点,类似于C++语言中的结构体
public static void main(String[] args)
{
int N, M, K; //n个人从k位置开始报数,数到m出列
Scanner input = new Scanner(System.in);
N = input.nextInt();
K = input.nextInt();
M = input.nextInt();
Node t = new Node(1); //头节点单列出来,方便形成循环链表
Node x = t;
for (int i = 2; i <= N; i++)
x = (x.next = new Node(i)); //建立单向链表
x.next = t; //最后一个节点的next指向第一个节点,形成循环链表
for (int i = 1; i <= K - 1; i++) //寻找报数的起点
x = x.next;
while (x != x.next)
{ //只剩下一个结点的时候停止
for (int i = 1; i < M; i++) {
x = x.next;
// System.out.print(x.val+" ");
}
//此时x是将出列的节点的前一个节点
System.out.println(x.next.val + " ");
x.next = x.next.next;
}
System.out.println(x.val);
}
}
import java.util.Scanner;
public class Main
{
static class Node
{
int data;
Node next;
Node before;
Node(int v)
{
data = v;
}
} //成员类,代表节点,类似于C++语言中的结构体
static Node head = new Node(1); //头节点单列出来
static void init()
{
Node x = head;
for (int i = 1; i<= 10; i++)
{
x.next = new Node(i); //建立双向链表
x.next.before = x;
x = x.next;
}
x.next = null;
}
static void del(int x)
{
for (Node T = head.next; T != null; T = T.next) //链表的遍历常用写法
{
if (T.data == x) //找到要的那个数了
{
T.before.next = T.next; //将节点从链表上摘除
T.next.before=T.before;
return; //删除结束后,结束函数。
}
}
}
static void insert(int x)
{
Node temp = new Node(x);
temp.next = head.next;
temp.next.before = temp;
head.next = temp;
}
static void show(int i)
{
// System.out.println("这是第" + i + "次操作");
for (Node T = head.next; T != null; T = T.next) //链表的遍历常用写法
{
System.out.print(T.data + " ");
}
System.out.println(" ");
}
public
static void main(String[] args)
{
int N; //n个人从k位置开始报数,数到m出列
Scanner in = new Scanner(System.in);
init();
N = in.nextInt();
// show(0);
for (int i = 0; i < N; i++)
{
int x = in.nextInt();
del(x);
insert(x);
show(i);
}
}
}