标签:system 需要 clear this 不能添加 ext 初始化 ide char
int chessArr1[][] = new int[11][11];//11*11的数组
int sum = 0;
chessArr1[1][2] = 1;//设置两个值
chessArr1[2][3] = 2;
//打印原数组
for(int[] row : chessArr1) {
for(int data : row) {
System.out.printf("%d\t", data);
if(data != 0) sum++;
}
System.out.println();
}
//稀疏数组建立
int sparseArr[][] = new int[sum + 1][3];
sparseArr[0][0] = 11;
sparseArr[0][1] = 11;
sparseArr[0][2] = sum;
int temp = 0;
//遍历查找非0元素,赋值给稀疏数组
for(int i = 0; i < 11; i++)
{
for(int j = 0; j < 11; j++) {
if(chessArr1[i][j] != 0) {
sparseArr[++temp][0] = i;
sparseArr[temp][1] = j;
sparseArr[temp][2] = chessArr1[i][j];
}
}
}
//输出稀疏数组
for(int[] row : sparseArr) {
for(int data : row) {
System.out.printf("%d\t", data);
}
System.out.println();
}
private int maxSize;
private int front;
private int rear;
private int[] arr;
public ArrayQueue(int arrMaxSize) {
maxSize = arrMaxSize;
arr = new int[maxSize];
front = -1;
rear = -1;
}
//是否满
public boolean isFull() {
return rear == maxSize - 1;
}
//是否空
public boolean isEmpty() {
return rear == front;
}
//增加元素
public void addQueue(int i) {
if(isFull()) {
System.out.println("队列满");
return;
}
rear++;
arr[rear] = i;
}
//依次返回从头开始的元素
public int getQueue() {
if(isEmpty()) {
throw new RuntimeException("队列空");
}
front++;
return arr[front];
}
//显示队列
public void showQueue() {
if(isEmpty()) {
System.out.println("队列空");
return;
}
int temp = 0;
for(int i : arr) {
System.out.printf("arr[%d]=%d\n", temp++, i);
}
}
//返回队首元素
public int headQueue() {
if(isEmpty()) {
throw new RuntimeException("队列空");
}
return arr[front + 1];
}
ArrayQueue aq = new ArrayQueue(3);
char key = ‘ ‘;
Scanner sc = new Scanner(System.in);
boolean loop = true;
while(loop) {
System.out.println("s:show");//显示
System.out.println("e:exit");//退出
System.out.println("a:add");//增加
System.out.println("g:get");//依次显示
System.out.println("h:head");//头元素
key = sc.next().charAt(0);
switch(key) {
case ‘s‘:
aq.showQueue();
break;
case ‘a‘:
System.out.println("输入一个数");
int value = sc.nextInt();
aq.addQueue(value);
break;
case ‘g‘:
try {
int res = aq.getQueue();
System.out.println(res);
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
}
case ‘h‘:
try {
int res = aq.headQueue();
System.out.println(res);
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
}
break;
case ‘e‘:
sc.close();
loop = false;
break;
default :
break;
}
}
与队列大致一致,有略微的不同
private int maxSize;
private int front;
private int rear;
private int[] arr;
public CircleArray(int arrMaxSize) {
maxSize = arrMaxSize;
arr = new int[maxSize];
// front = 0;
// rear = 0;
}
public boolean isFull() {
return (rear + 1) % maxSize == front;
}
public boolean isEmpty() {
return rear == front;
}
public void addQueue(int i) {
if(isFull()) {
System.out.println("队列满");
return;
}
arr[rear] = i;
rear = (rear + 1) % maxSize;
}
public int getQueue() {
if(isEmpty()) {
throw new RuntimeException("队列空");
}
//这里需要分析出front是指向队列的第一个元素
/*
* 先把front对应的值保留到一个临时变量
* 将front后移
* 将临时保存的变量返回
*/
int value = arr[front];
front = (front + 1) % maxSize;
return value;
}
public void showQueue() {
if(isEmpty()) {
System.out.println("队列空");
return;
}
/*
* 思路:从front开始遍历,遍历多少个元素
* 需要求出当前队列有效数据的个数
*/
for (int i = front; i < front + size(); i++) {
System.out.printf("arr[%d]=%d\n", i % maxSize, arr[i % maxSize]);
}
}
public int size() {
return (rear + maxSize - front) % maxSize;
}
public int headQueue() {
if(isEmpty()) {
throw new RuntimeException("队列空");
}
return arr[front];
}
class SingleLinkedList {
/*
* 初始化头节点,头节点不要动
*/
private HeroNode head = new HeroNode(0, "", "");
public HeroNode getHead() {
return head;
}
public void setHead(HeroNode head) {
this.head = head;
}
//得到链表长度
public int getLength(HeroNode head) {
if(head.next == null) {
return 0;
}
int length = 0;
HeroNode cur = head.next;
while(cur != null)
{
length++;
cur = cur.next;
}
return length;
}
//合并两个有序链表
public HeroNode addToOne(HeroNode h1, HeroNode h2) {
if(h1 == null && h2 == null) {
return null;
}
if(h1 == null) {
return h2;
}
if(h2 == null) {
return h1;
}
HeroNode head = null;
if(h1.no < h2.no) {
head = h1;
head.next = addToOne(h1.next, h2);
}
else {
head = h2;
head.next = addToOne(h1, h2.next);
}
return head;
}
//增加链表元素
public void add(HeroNode hn) {
// HeroNode temp = head;
// //遍历链表找到最后
// while(true) {
// if(temp.next == null) {
// break;
// }
// temp = temp.next;
// }
// temp.next = hn;
HeroNode temp = head;
boolean flag = false;//标志添加的编号是否存在
while(true) {
if(temp.next == null) {
break;
}
if(temp.next.no > hn.no) {
break;
}
else if(temp.next.no == hn.no) {
flag = true;//说明编号存在
break;
}
temp = temp.next;
}
if(flag) {//不能添加,已存在
System.out.println("isExisting");
}
else {
hn.next = temp.next;
temp.next = hn;
}
}
/*
* 查找单链表中倒数第K个节点
*/
public HeroNode getKNode(int k) {
int i = getLength(head) - k;
HeroNode temp = head.next;
while(i != 0) {
temp = temp.next;
i--;
}
return temp;
}
/*
* 单链表的反转
*/
public void reverse(HeroNode head) {
HeroNode reverseHead = new HeroNode(0, null, null);
if(head.next == null || head.next.next == null) {
return;
}
HeroNode temp = head.next;
HeroNode next = null;//指向当前的下一个节点
while(temp != null) {
next = temp.next;
temp.next = reverseHead.next;//将next的下一个节点指向新链表的最前端
reverseHead.next = temp;
temp = next;
}
head.next = reverseHead.next;
}
/*
* 修改信息
*/
public void update(HeroNode hn) {
if(head.next == null)
{
System.out.println("链表为空");
return;
}
HeroNode temp = head.next;
boolean flag = false;
while(true) {
if(temp == null) {
break;//到了链表的结束
}
if(temp.no == hn.no) {
flag = true;
break;
}
temp = temp.next;
}
if(flag) {
temp.name = hn.name;
temp.nickname = hn.nickname;
}
else {
System.out.println("没有找到,不能修改");
}
}
//删除节点
public void delete(HeroNode hn) {
HeroNode temp = head.next;
boolean flag = false;
while(true) {
if(temp.next == null) {
break;//到了链表的结束
}
if(temp.next.no == hn.no) {
flag = true;
break;
}
temp = temp.next;
}
if(flag) {
temp.next = temp.next.next;
}
else {
System.out.println("没有找到,不能删除");
}
}
//显示链表【遍历】
public void list() {
//判断链表是否为空
if(head.next == null) {
System.out.println("isempty");
return;
}
HeroNode temp = head.next;
while(true) {
if(temp == null) {
break;
}
System.out.println(temp);
//将temp后移
temp = temp.next;
}
}
}
/*
*定义HeroNode,每个HeroNode对象就是一个节点
*/
class HeroNode {
public int no;
public String name;
public String nickname;
public HeroNode next;//指向下一个节点
public HeroNode(int no, String name, String nickname) {
this.no = no;
this.name = name;
this.nickname = nickname;
}
//为了显示方法,重写tostring
@Override
public String toString() {
// TODO Auto-generated method stub
return "HeroNode [no=" + no + ", name=" + name + ", nickname=" + nickname + "]";
}
}
HeroNode hero1 = new HeroNode(1, "songjiang", "jishiyu");
HeroNode hero2 = new HeroNode(3, "ghcfg", "gfdf");
HeroNode hero3 = new HeroNode(6, "vhthggg", "gdg");
HeroNode hero4 = new HeroNode(2, "dgsdc", "drg");
HeroNode hero5 = new HeroNode(5, "dgsdc", "drg");
HeroNode hero6 = new HeroNode(8, "dgsdc", "drg");
HeroNode hero7 = new HeroNode(4, "dgsdc", "drg");
HeroNode hero8 = new HeroNode(7, "dgsdc", "drg");
// HeroNode hero5 = new HeroNode(4, "5744645", "8465");
// SingleLinkedList sll = new SingleLinkedList();
SingleLinkedList singleLinkedList = new SingleLinkedList();
SingleLinkedList singleLinkedList1 = new SingleLinkedList();
singleLinkedList.add(hero4);
singleLinkedList.add(hero2);
singleLinkedList.add(hero1);
singleLinkedList.add(hero3);
singleLinkedList1.add(hero5);
singleLinkedList1.add(hero6);
singleLinkedList1.add(hero7);
singleLinkedList1.add(hero8);
// singleLinkedList.update(hero5);
// singleLinkedList.delete(hero4);
// singleLinkedList.list();
// System.out.println(singleLinkedList.getLength(singleLinkedList.getHead()));
// System.out.println(singleLinkedList.getKNode(3));
// singleLinkedList.reverse(singleLinkedList.getHead());
// singleLinkedList.list();
// //测试用栈实现倒序打印
// Stack<HeroNode> stack = new Stack();
// stack.push(hero1);
// stack.push(hero2);
// stack.push(hero3);
// stack.push(hero4);
// while(stack.size() > 0) {
// System.out.println(stack.pop());
// }
singleLinkedList.getHead().next = singleLinkedList.addToOne(singleLinkedList.getHead().next, singleLinkedList1.getHead().next);
singleLinkedList.list();
// 显示链表【遍历】
public void list() {
// 判断链表是否为空
if (head.next == null) {
System.out.println("isempty");
return;
}
HeroNode2 temp = head.next;
while (true) {
if (temp == null) {
break;
}
System.out.println(temp);
// 将temp后移
temp = temp.next;
}
}
public void add(HeroNode2 hn) {
HeroNode2 temp = head;
//遍历链表找到最后
while(true) {
if(temp.next == null) {
break;
}
temp = temp.next;
}
/*
* 形成一个双向链表
*/
temp.next = hn;
hn.pre = temp;
}
/*
* 修改信息
*/
public void update(HeroNode2 hn) {
if(head.next == null)
{
System.out.println("链表为空");
return;
}
HeroNode2 temp = head.next;
boolean flag = false;
while(true) {
if(temp == null) {
break;//到了链表的结束
}
if(temp.no == hn.no) {
flag = true;
break;
}
temp = temp.next;
}
if(flag) {
temp.name = hn.name;
temp.nickname = hn.nickname;
}
else {
System.out.println("没有找到,不能修改");
}
}
//删除节点
public void delete(int no) {
if(head.next == null) {
System.out.println("链表为空");
return;
}
HeroNode2 temp = head.next;
boolean flag = false;
while(true) {
if(temp == null) {
break;//到了链表的结束
}
if(temp.no == no) {
flag = true;
break;
}
temp = temp.next;
}
/*
* 有风险,删最后一个节点时。
* 会出现空指针异常。
*/
if(flag) {
temp.pre.next = temp.next;
if (temp.next != null) {
temp.next.pre = temp.pre;
}
}
else {
System.out.println("没有找到,不能删除");
}
}
class CircleList {
private Boy first = new Boy(-1);
public void addBoy(int nums) {//nums做数据校验
if(nums < 1) {
System.out.println("值不正确");
return;
}
Boy curboy = null;//辅助指针
for(int i = 1; i <= nums; i++) {
Boy boy = new Boy(i);
if(i == 1) {
first = boy;
first.setNext(first);//使成环
curboy = first;//指向第一个
}else {
curboy.setNext(boy);
boy.setNext(first);
curboy = boy;
}
}
}
public void showBoy() {
if(first == null) {
System.out.println("链表为空");
return;
}
Boy curboy = first;
while(true) {
System.out.println("编号为:" + curboy.getNo());
if(curboy.getNext() == first) {
break;
}
curboy = curboy.getNext();
}
}
/*
* startNo表示从第几个小孩开始数数
* countNum表示数几下
* nums表示最初有几个小孩
*/
public void outList(int startNo, int countNum, int nums) {
if(first == null || startNo < 1 || startNo > nums) {
System.out.println("参数输入有误");
return;
}
Boy curboy = first;
//指向链表最后的节点
while(true) {
if(curboy.getNext() == first) {
break;
}
curboy = curboy.getNext();
}
//报数前first curboy同时移动k-1次
for(int j = 0; j < startNo - 1; j++) {
first = first.getNext();
curboy = curboy.getNext();
}
//报数时移动m-1次
while(true) {
if(curboy == first) {
break;
}
for(int j = 0; j < countNum - 1; j++) {
first = first.getNext();
curboy = curboy.getNext();
}
System.out.println("小孩出圈" + first.getNo());
first = first.getNext();
curboy.setNext(first);
}
System.out.println("最后的小孩编号是:" + first.getNo());
}
}
CircleList cl = new CircleList(); cl.addBoy(10); cl.showBoy(); cl.outList(2, 6, 10);
标签:system 需要 clear this 不能添加 ext 初始化 ide char
原文地址:https://www.cnblogs.com/shanaprprpr/p/14709447.html