基于链表数组的实现-打印方法不编译



对于我们之前使用节点类实现的作业,她要求所有学生在不使用节点类的情况下重做此作业。除了我的printList方法之外,我的一切都按预期进行——你能回顾一下我的printList方法并告诉我你的想法吗?下面是类和驱动程序。

链表类

public class LinkedListArray {
int size;
int maxSize;
int arrayVal[];

public LinkedListArray()
{
this.size = 10;
}

public LinkedListArray(int list)
{
if(list < 0)
maxSize = 20;
else
maxSize = list;

size = 0;
arrayVal = new int[maxSize];
}

public int size(){
return size;
}

public boolean isEmpty() {   
return (size() == 0);
}

public boolean isFull(){
return (size() == maxSize);
}

public void addHead(int value){

if(! this.isFull()){
for(int i = size; i > 0; i--)
arrayVal[i] = arrayVal[i - 1];

arrayVal[0] = value;
size++;

}else
System.out.println("The List is Full.");
}

public void addTail(int value){

if(! this.isFull()){
arrayVal[size] = value;
size++;

}else
System.out.println("The List is Full.");
}

public int removeHead() {

if(! this.isEmpty())
{
int value = arrayVal[0];

for(int i = 0; i < size -1; i++){
arrayVal[i] = arrayVal[i+1];
}

size--;
return value;

}else 
System.out.println("The List is Empty.");

return arrayVal[size];
}

public int removeTail(){

if(!isEmpty()){ 
size--; 

}else 
System.out.println("The List is Empty.");

return arrayVal[size];
}

public String printList(){

String listString = new String();

if(! this.isEmpty())
return "The List is Empty.";

for(int i = 0; i < size; i++) {
listString += arrayVal[i];

if(i < size -1) {
listString += ", ";
}
}  
return "Elements in the List: " + listString;
} 
}

驾驶员等级

public class ProgramDriver {
public static void main(String[] args) {
LinkedListArray lla = new LinkedListArray(10);

System.out.println("Size of List: " + lla.size());
System.out.println("Is the list empty?: " + lla.isEmpty());
System.out.println("Is the list full?: " + lla.isFull());

lla.addHead(4);
lla.addHead(5);
lla.addTail(10);
lla.addTail(9);
lla.addTail(7);
lla.addTail(2);
lla.addHead(8);
lla.addHead(1);
lla.addTail(3);
lla.addTail(6);

lla.printList();

System.out.println("Size of List: " + lla.size());
System.out.println("Is the list empty?: " + lla.isEmpty());
System.out.println("Is the list full?: " + lla.isFull());

lla.removeHead();
lla.removeTail();

System.out.println("Size of List: " + lla.size());
System.out.println("Is the list empty?: " + lla.isEmpty());
System.out.println("Is the list full?: " + lla.isFull());

lla.printList();  
}
}

首先:StackOverflow不是一个代码审查站点。不要只是发布代码并询问人们的想法。(调查https://codereview.stackexchange.com/为此(

因此,当问这样的问题时,非常有帮助指定你看到的行为,以及以什么方式不是你期望的。这样,我们可以帮助您解决实际遇到的具体问题。

也就是说,这显然是一个问题:

if(! this.isEmpty())
return "The List is Empty.";

如果列表不是空的,你为什么要说";列表为空"?我猜你想删除那里的!

除此之外,如果您的列表中有很多项目,那么循环中的字符串串联可能会变得昂贵。你应该避免它。看看String.join()StringBuilder

相关内容

  • 没有找到相关文章

最新更新