C言語を使用したリンクリストのヘッドおよびテール要素ロジックの削除。
リンクリストは動的メモリ割り当てを使用します。つまり、それに応じて拡大および縮小します。ノードの集まりです。
ノードには、データとリンクの2つの部分があります。これらについて以下に説明します。
リンクリストの操作
リンクリストの操作には、次の3種類があります-
- 挿入
- 削除
- トラバース
削除
- ノードを特定します。
- ノードの割り当てを解除してもリストが未接続のコンポーネントにならないようにリンクを調整します。
- 削除する要素を返す/表示します。
- メモリの割り当てを解除します。
ヘッド要素を削除
以下の手順に従って、Cプログラミング言語のhead要素を削除します。
1. void del_head()
2. {
3. int x;
Node *temp;
4. if(Head==NULL)
5. {
6. printf("List is empty");
7. return;
8. }
9. x=Head->ele;
10. temp=Head;
11. if(Head==Tail)
12. Head=Tail=NULL:
13. Else
14. Head=Head->next;
15. printf("Deleted element %d",x);
16. free(temp);
17. } ここで
ステップ4-リストが空かどうかをチェックします。
ステップ9-削除する要素を読み取ります。
ステップ10-一時ポインタによって参照されるヘッド。
ステップ11-最後の削除を確認します。
ステップ14-ヘッドポインタをリスト内の次の要素に移動します。
ステップ15-削除する要素を表示します。
ステップ16-メモリの割り当てを解除します。
テール要素を削除
以下の手順に従って、Cプログラミング言語のテール要素を削除します。
1. void del_tail()
2. {
3. int x;
4. Node *temp;
5. if(Head==NULL)
6. {
7. printf("List is empty");
8. return;
9. }
10. temp=Head;
11. while(temp->next !=Tail)
12. temp=temp->next;
13. x=Tail->ele;
14. Tail=temp;
15. Temp=temp->next
16. Tail->next=NULL;
17. printf("Deleted element %d",x);
18. free(temp);
19. } ここで
ステップ4-リストが空かどうかをチェックします。
ステップ10、11、12-一時ポインタをリストの最後の1つのノードに移動します。
ステップ13-削除するテール要素を読み取ります。
ステップ14-テールポインタを最後の1つのノードに移動します。
ステップ15-一時ポインタをリストの最後のノードに移動します。
ステップ16-テールノードから一時ノードへの参照を削除します。
ステップ17-削除する要素を表示します。
ステップ18-メモリの割り当てを解除します。
-
実際にC言語で反転せずに、リンクリストの反転を印刷します
タスクは、再帰関数を使用して、指定されたリンクリストの逆を印刷することです。プログラムは逆に印刷する必要がありますが、リストを逆にしないでください。つまり、ノードの順序は同じままです。 ここで、プログラムは、リストの最後のノードに格納されているNULLが調べられ、ヘッドノードのデータが出力されるまで、最初のノードのアドレスを含むヘッドポインタを次のノードに移動します。 例 Input: 29 34 43 56 Output: 56 43 34 29 まず、ノードがリストに挿入され、挿入されたノードを指すポインターが開始されます。最終リストが作成された後、一時ポインタが最初のノードポイ
-
Cプログラムで余分なスペースや変更を加えずに、リンクリストの裏面を印刷します。
タスクは、余分なスペースを使用せずにリンクリストの最後からノードを印刷することです。つまり、余分な変数はなく、最初のノードを指すヘッドポインターが移動します。 例 Input: 10 21 33 42 89 Output: 89 42 33 21 10 再帰的アプローチ(余分なスペースを使用)、リンクリストの反転(指定されたリンクリストの変更が必要)、スタック上の要素のプッシュ、要素のポップと表示など、リンクリストを逆の順序で印刷するソリューションは多数あります。 1つずつ(スペースO(n)が必要)、これらのソリューションはO(1)よりも多くのスペースを使用しているようです。 O(