陣列,鍊錶總結

2021-09-26 19:57:34 字數 2303 閱讀 7144

1.陣列:連續的儲存空間,相同的資料型別的資料

陣列隨機訪問的時間複雜度為o(1),刪除,插入的時間複雜度為o(n);

插入:如果在陣列的末尾插入元素,時間複雜度為o(1);如果在陣列的頭元素位置插入資料,時間複雜度為o(n);如果在其他位置k插入元素,時間複雜度為o(k);

刪除:如果在陣列的末尾刪除元素,時間複雜度為o(1);如果在陣列的頭元素位置刪除資料,時間複雜度為o(n);如果在其他位置k刪除元素,時間複雜度為o(k);

相關**如下:

在陣列的末尾插入元素

data[++last] = item; }

在陣列的其他位置插入元素

void insertitem(int j,int item)

data[i - 1] = item;

++last;

}

刪除元素

int deleteitem(int i)

else

}--last;

return tmp;

}

隨機訪問元素

int getitem(int i)

2.1. 順序表:跟陣列類似

2.2. 單鏈表:鍊錶方向只有前後倆個方向

單鏈表與順序表的、陣列的區別:記憶體不是連續的儲存空間,是靠指標把很多塊兒記憶體空間串起來的,刪除、插入的時間複雜度為o(1),隨機訪問的時間複雜度為o(n);

相關**如下:

public class linklist : ilistds

set

} //構造器

public linklist()

//求單鏈表的長度

public int getlength()

return len;

} //清空單鏈表

public void clear()

//判斷單鏈表是否為空

public bool isempty()

else

} //在單鏈表的末尾新增新元素

p = head;

while (p.next != null)

p.next = q;

} //在單鏈表的第i個結點的位置前插入乙個值為item的結點

public void insert(t item, int i)

if (i == 1)

nodep = head;

noder = new node();

int j = 1;

while (p.next != null&& j < i)

if (j == i)

} //在單鏈表的第i個結點的位置後插入乙個值為item的結點

public void insertpost(t item, int i)

if (i == 1)

nodep = head;

int j = 1;

while (p != null&& j < i)

if (j == i)

} //刪除單鏈表的第i個結點

public t delete(int i)

nodeq = new node();

if (i == 1)

nodep = head;

int j = 1;

while (p.next != null&& j < i)

if (j == i)

else

} //獲得單鏈表的第i個資料元素

public t getelem(int i)

nodep = new node();

p = head;

int j = 1;

while (p.next != null&& j < i)

if (j == i)

else

} //在單鏈表中查詢值為value的結點

public int locate(t value)

nodep = new node();

p = head;

int i = 1;

while (!p.data.equals(value)&& p.next != null)

return i;

} }2.3. 雙向鍊錶:雙向鍊錶的方向是前後方向,但是存在倆個指向,佔記憶體較多,但是訪問速度較快,是一種空間換時間的優化方式。每個節點有倆個指標,分別指向自己的直接前驅,和自己的直接後繼。因此是雙向鍊錶。

敬請期待:::::哈哈哈

表 陣列 鍊錶

陣列 陣列是個表,是個連續儲存的表。在c裡面,首先我們知道陣列容量是固定的,使用前先分配大小,所以使用後就不是很方便調整容量 解決這個問題在c裡面一般是預先估計陣列的大小,然後用雙倍的容量建立陣列,是不是很麻煩?正因為陣列是連續儲存和容量固定,所以注定陣列不方便進行增刪這種改變容量的操作。原因是假如...

陣列模擬鍊錶(靜態鍊錶)

為了模擬鍊錶的操作,設定了乙個date 資料 以及cur 相當於指標域 typedef struct list list s size size為陣列大小 我們用s size 1 cur來起頭指標的作用,指向鍊錶的第乙個元素的下標。因為不能直接malloc出來乙個空間,需要s 0 來儲存乙個空的陣列...

鍊錶 鍊錶環問題總結

給定乙個單鏈表,只給出頭指標h 1 如何判斷是否存在環?2 如何知道環的長度?3 如何找出環的連線點在 4 帶環鍊錶的長度是多少?1 如何判斷是否存在環?對於問題1,使用追趕的方法,設定兩個指標slow fast,從頭指標開始,每次分別前進1步 2步。如存在環,則兩者相遇 如不存在環,fast遇到n...