1. 程式人生 > >資料結構---在記憶體上理解連結串列

資料結構---在記憶體上理解連結串列

第一次寫部落格,有寫的不好的地方請多指教。

首先,在學習資料結構中,對連結串列在記憶體上的理解非常重要,上程式碼
public class LinkNode<M> {
    public  M data;
    public  LinkNode nextNode;
    @Override
    public String toString() {
        return "LinkNode [data=" + data + ", nextNode=" + nextNode + "]"+"/n";
    } 
}

<M>這是泛型。先建立一個連結串列結構的類。很簡單的一個連結串列結構,接下來建立一個Preson類
public class Person {
public String name;
public int age;
public String xueli;

@Override
public String toString() {
    return "Person [name=" + name + ", age=" + age + ", xueli=" + xueli + "]";
}

}

好了現在所需要的類都建立好了,接下來看主函式


public class MainTest {

    public static void main(String [] ddd) {       
        LinkNode<Person> personLin = new LinkNode<Person>();     這裡呢首先將Person當做型別   
        Person zwx = new Person();
        zwx.age = 22;
        zwx.name ="周文先";
        personLink0.data =zwx;
        LinkNode<Person> personLink0 = new LinkNode<Person>();
        Person person = new Person();       
        personLink0 .data = person;
        personLink0 .data.age = personLin .data.age;
        personLink0 .data.name = personLin .data.name;       
        personLin .data.age = 30;
        LinkNode<Person> personLinkLast= personLink0 ;  //這句話主要是記錄最後一個連結串列塊的位置,用他來記錄,如果不是  LinkNode<Person> personLinkLast2 = personLinkLast而是  LinkNode<Person> personLinkLast=new LinkNode<Person>(); personLinkLast=personLink0 ;就會把第一個資料丟了,這個可以從堆疊上來分析
        for(int i = 0; i < 100; i++) {
            LinkNode<Person> personLinknext = new LinkNode<Person>();
            Person personi = new Person();
            personi.age = 30 + i;
            personi.name ="zwx" + i;
            personLinknext.data = personi;
            personLinkLast.nextNode = personLinknext;
            personLinkLast= personLinknext;
        }        
        System.out.println(personLinkLast);
    }
}

這個利用了JVM上的垃圾回收的原理,不懂的可以去百度,以後部落格會慢慢出現的

我想這樣看圖可能理解的快一點然後一級一級的迴圈下去,這個是從記憶體上去分析,餓感覺自己沒講出來,希望大家能看圖理解,不好意思,第一次寫部落格,下次會繼續去努力,