鏈表彙總

1.在棧中,棧底指針保持不變,有元素入棧,棧頂指名增加,有元素出棧,棧頂指針減少。在循環隊列中,隊頭指針和隊尾指針的動態變化決定隊列的長度。在循環鏈表中,前一個結點指向後一個結點,而最後一個結點指向頭結點,只有頭結點是固定的。線性鏈表中,由於前一個結點包含下一個結點的指針,尾結點指針爲空,要插入或刪除元素,只需要改變相應位置的結點指針即可,頭指針和尾指針無法決定鏈表長度。

2.在鏈表中的表示方法

添加鏈接描述
添加鏈接描述
添加鏈接描述

3.線索二叉鏈表是利用()域存儲後繼結點的地址。

左孩子域:
0:指示左孩子
1:指示節點的前驅

右孩子域:
0:指示右孩子
1:指示節點的後繼

4.對10TB的數據文件進行排序,應使用的方法是

外部排序指待排序文件較大,內存一次性放不下,需存放在外部介質中。外部排序通常採用歸併排序法。

5.將字符串賦值給字符數組:

********************************************** 1.定義時直接用字符串賦值。 char a[10]="hello";但是不能先定義再賦值,即以下非法:char a[10];a[10]="hello"; ********************************************** 2.利用strcpy。 char a[10]; strcpy(a,“hello”); ********************************************** 3.利用指針。 char *p; p="hello";這裏字符串返回首字母地址賦值給指針p。另外以下非法:char a[10]; a="hello"; a已經指向在堆棧中分配的10個字符空間,不能再指向數據區中的"hello"常量。可以理解爲a是一個地址常量,不可變,p是一個地址變量。 ********************************************** 4.數組中的字符逐個賦值。

6.

鏈棧與順序棧相比,其特點之一是通常不會出現棧滿的情況。

7.考察單鏈表的插入操作,核心就是新舊地址的互換,分兩步:

1、將舊結點的指針域(即pPre->Link,它存放着接下來的那個結點的地址)賦值給新結點的指針域(pNew->Link),這一步是因爲:爲了完成插入,新結點應該指向舊結點原來指向的元素。 2、將指向新結點的指針(pNew,即新結點的地址)賦值給舊結點的指針域(pPre->Link),以讓舊結點指向新結點。
有點繞,但是理解了就會很清晰,只要將pPre->Link,pNew,pNew->Link這些地址(指針)的關係搞清就行。

8。

A.頭指針是指向第一個元素(結點)的指針。
當刪除單鏈表中的第一個元素時只需要將頭指針指向第二個元素,然後釋放第一個元素儲存空間申請的內存。與鏈表長度無關。
1
2
3
ListNode *temp = head->next;
head->next = temp->next;
free(temp);
B
尾指針是指向最後一個元素(結點)的指針,與頭指針類似。
當刪除單鏈表中的最後一個元素時 由於不是雙向鏈表,所以要從頭指針開始,一直遍歷直到倒數第二個元素,將倒數第二個元素(結點)指向NULL,釋放原末端元素(結點)空間後,將尾指針等於新的末端元素(結點)。所以與鏈表長度有關。
1
2
3
4
5
ListNode *p = head;
while(p->next != rear) p = p->next;
p->next = NULL;
free®;
r = p;

C
在單鏈表第一個元素前插入一個新元素時,只需要把新的元素(結點)指向原來的第一個元素(結點),然後使頭指針指向新的元素(結點)。與鏈表長度無關。
1
2
new_point->next = head->next;
head->next = new_point;
D
在單鏈表最後一個元素後插入一個新元素時,只需先將新結點指向NULL,然後將尾指針指向的原末端結點指向新的元素(結點),最後將尾指針指向新的元素(結點)。與鏈表長度無關。
1
2
3
new_point->next = NULL;
rear->next = new_point;
rear = new_point;

9.自己長時間不理解的

s->next=p->next
p->next=q與q=p->next區分
p->next=q 將q 賦值給p->next,即p的下一個結點是q
q=p->next 將p->next(t)賦值給q, 即q也指向t
在鏈表當中刪除一個節點
刪除結點q,將q的前繼結點的指針指向q的後繼結點即可。

q=p->next;
p->next=q->next;
在這裏插入圖片描述
怎麼理解:p->next指向q,也就是指向自己,並沒有再去指向q->next
然後就是,p->next=q->next:將q->next賦值給p->next,這樣就將q給架空了,也就是刪除掉了
10.鏈表基礎知識理解
簡單介紹鏈表
什麼是線性表?什麼是線性表的順序存儲結構?什麼是線性表的鏈式存儲結構?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章