通过扑克牌案例,简单说一说你对构造方法的理解。一副牌类的构造方法的写法和一张牌类的写法差别很大
对于一副牌类,其构造方法通常用于初始化整副牌的状态,比如填充大小王和52张扑克牌,并将它们按照一定顺序排列。这样,在创建一副新牌时,我们就可以通过调用其构造方法来初始化牌的状态,而无需手动创建每张牌并设置其属性。
下面是一副牌类的构造方法的示例代码:
public class Deck {
private List<Card> cards;
public Deck() {
this.cards = new ArrayList<>();
for (Suit suit : Suit.values()) {
for (Rank rank : Rank.values()) {
Card card = new Card(rank, suit);
this.cards.add(card);
}
}
}
//...
}
与之不同,一张牌类的构造方法通常用于初始化单张牌的状态,比如设置牌的点数和花色。由于每张牌的属性不同,因此每个构造方法可能会接受不同的参数进行初始化。
下面是一张牌类的构造方法的示例代码:
public class Card {
private Rank rank;
private Suit suit;
public Card(Rank rank, Suit suit) {
this.rank = rank;
this.suit = suit;
}
//...
}
在这个例子中,构造方法接受一个点数和一个花色作为参数,并用它们来初始化牌的状态。通过这种方式创建新的牌对象时,我们可以指定其点数和花色属性。
不知道你这个问题是否已经解决, 如果还没有解决的话:
上图是我们的例子,在这个例子中我们引用两个指针、一个头指针来进行讲解,三个指针的顺序我们是不可以调换的。
public LinkList<T> reverse_order1(LinkList<T> L) // 就地倒序链表
{
Node<T> p = L.head;
Node<T> q = L.head.next;
Node<T> r = q.next;
while(r!=null)
{
q.next = r.next;
r.next = p.next; // 前一个结点往后一个结点相接的时候需要找寻到前前一个结点,通过前前一个结点来索引
p.next = r;
r = q.next;
}
return L;
}