リンク リストのトップ 17 のインタビューの質問と回答
ここでは、夢の仕事に就くための、新人だけでなく経験豊富な候補者向けのリンクリスト面接の質問と回答を紹介します。
1) リンクリストとは何ですか?
リンク リストは、項目のコレクションを保存できるデータ構造です。 つまり、リンク リストを使用して、同じタイプの複数のオブジェクトを保存できます。 リストの各ユニットまたは要素はノードと呼ばれます。 各ノードには独自のデータと次のノードのアドレスがあります。 まるで鎖のようだ。 リンク リストは、グラフとツリーを作成するために使用されます。
無料 PDF ダウンロード: リンクされたリストのインタビューの質問と回答
2) リンクリストではどのような種類のメモリ割り当てが参照されますか?
動的メモリ割り当ては、リンク リストに対して参照されます。
3) リンクされたリストの走査とは何ですか?
「トラバーサル」という用語は、リスト内の各要素を処理する操作を指すために使用されます。
4) リンクリストのノードとは何ですか? リンク リストの種類に名前はありますか?
(データ + リンク) を合わせてノードと呼びます。 リンク リストの種類は次のとおりです。
- 単方向リスト
- 二重リンクリスト
- 多重リンクリスト
- 循環リンクリスト
5) 単一リンクリストとは何ですか?
単一リンクリストは、 データ構造片方向リンクリストでは、リスト内の各ノードは、そのノードの内容と、リスト内の次のノードへの参照またはポインタを格納します。前のノードへの参照またはポインタは格納されません。
6) Linear との違いについて言及します。 配列 そしてリンクリスト?
Linear Array と Linked List の違いを以下に示します。
線形配列 | リンクリスト |
---|---|
削除と挿入は難しいです。 | 削除や挿入も簡単に行えます。 |
挿入や削除には動作が必要です | 挿入や削除の場合、ノードの移動は必要ありません。 |
スペースが無駄になっている | スペースが無駄にならない |
高い | 高価ではありません |
要件に応じて短縮または延長することはできません | 要件に応じて短縮または延長できます |
各要素を利用するには、同じ時間が必要です。 | 各要素を利用するには、必要な時間が異なります。 |
連続したメモリ位置に要素が格納されます。 | 要素は連続したメモリ位置に格納される場合もあれば、格納されない場合もあります |
特定の要素に移動する必要がある場合は、そこに直接到達できます | 特定のノードに到達するには、そのノードの前にあるすべてのノードを通過する必要があります。 |
7) リンク リストの用途について言及してください。
リンク リストのアプリケーションは次のとおりです。
- リンク リストは、キュー、スタック、グラフなどを実装するために使用されます。
- リンクされたリストでは、事前にサイズを知る必要はありません。
- リンクされたリストを使用すると、リストの先頭と末尾に要素を挿入できます。
8) リンクリストのダミーヘッダーには何が含まれますか?
リンクされたリストでは、ダミーヘッダーには実際のデータの最初のレコードが含まれます。
9) 単一リンクリストの先頭にデータを挿入する手順について言及していますか?
単一リンクリストの先頭にデータを挿入する手順は次のとおりです。
- 新しいノードを作成する
- headポインタを新しいノードのnextポインタに割り当てて新しいノードを挿入します。
- 新しいノードを指すようにヘッド ポインターを更新します。
Node *head; void InsertNodeAtFront(int data) { /* 1. create the new node*/ Node *temp = new Node; temp->data = data; /* 2. insert it at the first position*/ temp->next = head; /* 3. update the head to point to this new node*/ head = temp; }
10) 単一リンクリストと二重リンクリストの違いについて言及してください。
二重リンク リスト ノードには XNUMX つのフィールドが含まれます。
- 整数値と
- 他のノードへの XNUMX つのリンク
- XNUMX つは前のノードを指すもの、もう XNUMX つは前のノードを指すもの、
- other は次のノードを指します。
一方、単一リンクリストには、次のノードへのポイントのみが含まれます。
11) リンク リストを使用するアプリケーションには何があるか教えてください。
キューとスタックはどちらも、リンクリストを用いて実装されることが多いです。その他の応用としては、リスト、バイナリツリー、スキップ、展開リンクリスト、ハッシュテーブルなどがあります。
12) リストの先頭に項目を追加する方法を説明してください。
リストの先頭に項目を追加するには、次の手順を実行する必要があります。
- 新しい項目を作成し、その値を設定します
- 新しい項目をリストの先頭を指すようにリンクします。
- リストの先頭を新しい項目に設定します
関数を使用してこの操作を実行している場合は、head 変数を変更する必要があります。 これを行うには、ポインター変数へのポインター (ダブル ポインター) を渡す必要があります。 ポインタ自体を変更できるようになります。
13) リンクリストの最大の利点は何ですか?
リンク リストの最大の利点は、リストの固定サイズを指定しないことです。 チェーンに追加する要素が増えるほど、チェーンは大きくなります。
14) 単一リンクリストから最初のノードを削除する方法について言及していますか?
単一リンクリストから最初のノードを削除するには
- 現在の開始を別の一時ポインタに保存する
- 開始ポインタを XNUMX つ前に移動
- 開始ポインタのバージョンを更新したため、一時、つまり前の開始ノードを削除します。
15) 単一リンクリストを最初から最後まで表示する方法について言及しますか?
単一リンクリストを最初から最後まで表示するには、
- create() を使用してリンク リストを作成します。
- グローバル変数「start」内に格納されているアドレスは変更できないため、ノード型の一時変数「temp」を XNUMX つ宣言する必要があります。
- 開始点から終了点まで移動するには、ポインタ変数、つまり temp に開始ノードのアドレスを割り当てる必要があります。
struct node *temp; //Declare temp temp = start; //Assign Starting Address to temp
temp が NULL の場合は、最後のノードに到達したと言えます。
while(temp!=NULL) { printf("%d",temp->data); temp=temp->next; }
16) 空きノードが利用できるリンク リストに新しいノードを挿入する方法について言及しますか?
リンク リストに新しいノードを挿入するには、空きノードがアベイル リストで使用できるようになります。
17) どのヘッダー リストについて言及すると、最後のノードに null ポインターが含まれていることがわかりますか?
接地されたヘッダー リストの場合、最後のノードに null ポインターが含まれていることがわかります。
これらの面接の質問は、あなたの活力(口頭)にも役立ちます
とても素敵
とても良い質問ですね……………………
とても助かります、ありがとう
どうすればこの問題を解決できるでしょうか
(ダミーヘッドノードを含むリンクリスト)
1 つのリンク リスト L2 と L2 が与えられた場合、ADT リンク リストを使用して L1 の最後から XNUMX 番目の要素の後に LXNUMX を挿入する擬似言語の手順を決定します。
L1 が 1-2-3-4-5-6-7-8-9 で、L2 が 1-1-1 の場合
The result is 1-2-3-4-5-6-7-1-1-1-8-9
最初に 1 つのポインターを使用して LXNUMX をトラバースする必要があります。
pointer1 – 頭から XNUMX ステップ。
pointer2 – 頭から 3 ステップ。
while (pointer2.next!=null){
ポインター2 = ポインター2.next;
ポインター1 = ポインター1.next;
}
// これで、ポインタ 1 が最後から 3 番目のノードを指すようになります。
temp = pointer1.next
pointer1.next = L2;
traversL2 を最後まで実行して最後の要素を取得します->
LastElementOfL2.Next = 一時;
...
とても良い