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(