import java.util.Scanner;
class CrossLNode{
private int col,row,data;
private CrossLNode right,down;
public int getCol() {
return col;
}
public void setCol(int col) {
this.col = col;
}
public int getRow() {
return row;
}
public void setRow(int row) {
this.row = row;
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public CrossLNode getRight() {
return right;
}
public void setRight(CrossLNode right) {
this.right = right;
}
public CrossLNode getDown() {
return down;
}
public void setDown(CrossLNode down) {
this.down = down;
}
}
public class CrossLink {
public CrossLNode rowCursor;
public CrossLNode colCursor;
CrossLNode head = new CrossLNode();
public void initCrossLink(){
System.out.println("输入十字链表的行数");
head.setRow(new Scanner(System.in).nextInt());
System.out.println("输入十字链表的列数");
head.setCol(new Scanner(System.in).nextInt());
System.out.println("输入非零元的个数");
head.setData(new Scanner(System.in).nextInt());
rowCursor = head;
colCursor = head;
for(int i = 0 ; i <head.getRow();i++){
CrossLNode rowHead = new CrossLNode();
rowHead.setData(i);
rowCursor.setDown(rowHead);
rowCursor = rowHead;
}
for(int i = 0 ; i <head.getCol();i++){
CrossLNode colHead = new CrossLNode();
colHead.setData(i);
colCursor.setRight(colHead);
colCursor = colHead;
}
for(int i=0;i<head.getData();i++){
CrossLNode node = new CrossLNode();
System.out.println("输入该结点所在的行数");
node.setRow(new Scanner(System.in).nextInt());
System.out.println("输入该结点所在的列数");
node.setCol(new Scanner(System.in).nextInt());
System.out.println("输入该结点的值");
node.setData(new Scanner(System.in).nextInt());
CrossLNode cursor=head.getRight();
while(cursor.getData()!=node.getCol()){
cursor = cursor.getRight();
}
if(cursor.getDown()==null){
cursor.setDown(node);
}else{
while(cursor.getDown()!=null){
cursor = cursor.getDown();
}
cursor.setDown(node);
}
cursor = head.getDown();
System.out.println(cursor.getCol()+cursor.getRow()+cursor.getData());
while(cursor.getData()!=node.getRow()){
cursor = cursor.getDown();
}
if(cursor.getRight()==null){
cursor.setRight(node);
}else{
while(cursor.getRight()!=null){
cursor = cursor.getRight();
}
cursor.setRight(node);
}
}
}
public void print(){
CrossLNode cursor =head;
for(cursor=cursor.getDown();cursor!=null;cursor=cursor.getDown()){
CrossLNode rowCursor =cursor;
for(rowCursor=rowCursor.getRight();rowCursor!=null;rowCursor=rowCursor.getRight()){
System.out.print(rowCursor.getData()+" ");
}
}
System.out.println();
}
public void print2(){
CrossLNode cursor =head;
for(cursor=cursor.getRight();cursor!=null;cursor=cursor.getRight()){
CrossLNode colCursor =cursor;
for(colCursor=colCursor.getDown();colCursor!=null;colCursor=colCursor.getDown()){
System.out.print(colCursor.getData()+" ");
}
}
System.out.println();
}
public static void main(String[] args) {
CrossLink crossLink = new CrossLink();
crossLink.initCrossLink();
crossLink.print();
crossLink.print2();
}
}