你不能只使用一个链表
LinkedList<Integer> stacks[] = new LinkedList<Integer>[recDataSize];
如何输入数据
for(int i=0;i<recDataSize;i++){
int test = recDada.getKey();
stacks[i] = new LinkedList<Integer>();
while(test > 0) {
stacks[i].push(test % 10);
test = test/10;
}
}
因此stack[0]
会7,3
。stack[1]
将会1,8,0
打印功能
//Add 0s to each stack
for (int i = 0; i <stacks.length; i++) {
while(stacks[i].size() < 5) stacks[i].addFirst(0);
}
//Assuming all stacks are length 5 as they have been set in loop i
for (int j = 0; j < 5; j++) {
for (int i = 0; i <stacks.length; i++) {
System.out.print(stacks[i].get(j)+" ");
}
System.out.println();
}
每个堆栈都需要输入。
另一种选择是使用像 -1 这样的未使用字符来分隔一个长链表中的数字。然后将该链表映射到二维数组并打印:
现在对于那个链表
LinkedList<integer> stack=new LinkedList<Integer>();
如何输入:
for(int i=0;i<recDataSize;i++){
int test = recData.getKey();
stacks[i] = new LinkedList<Integer>();
while(test > 0) {
stacks[i].push(test % 10);
test = test/10;
}
while(stacks[i].size() < 5) stacks[i].addFirst(0);
//Add 0 in the input now not in printing function
}
因此堆栈将是0 0 0 7 3 0 0 1 8 0
映射功能
int map[][]=new int[recDataSize][5]; //This is the 2d array
for (int i = 0; i <recDataSize; i++) {
for (int j = 0; j < 5; j++) map[i][j]=stack.get((i*5)+j);
}
矩阵将为 0 0 0 0 0 1 7 8 3 0
现在只需打印 (i,j)