C言語を使用してキュー内の要素を削除することを説明する
データ構造は、構造化された方法で編成されたデータのコレクションです。以下に説明するように、2つのタイプに分けられます-
-
線形データ構造 −データは直線的に編成されます。たとえば、配列、構造、スタック、キュー、リンクリスト。
-
非線形データ構造 −データは階層的に編成されています。たとえば、ツリー、グラフ、セット、テーブル。
キュー
これは線形データ構造であり、挿入は後端で行われ、削除は前端で行われます。
キューの順序はFIFO–先入れ先出し
です。操作
- 挿入–要素をキューに挿入します。
- 削除–キューから要素を削除します。
条件
-
キューオーバーフロー-要素を完全なキューに挿入しようとしています。
-
フロー中のキュー-空のキューから要素を削除しようとしています。
アルゴリズム
以下に挿入のアルゴリズムを示します()-
- キューのオーバーフローを確認します。
if (r==n) printf ("Queue overflow")
- それ以外の場合は、要素をキューに挿入します。
q[r] = item r++
以下に示すのは、削除()のアルゴリズムです。 −
- フロー中のキューを確認します。
if (f==r) printf ("Queue under flow")
- それ以外の場合は、キューから要素を削除します。
item = q[f] f++
以下に示すのは、表示()のアルゴリズムです。 −
- キューが空かどうかを確認します。
if (f==r) printf("Queue is empty")
- それ以外の場合は、「f」から「r」までのすべての要素を印刷します。
for(i=f; i<r; i++) printf ("%d", q[i]);
プログラム
以下は、キュー内の要素を削除するためのCプログラムです-
#include <stdio.h> #define MAX 50 void insert(); int array[MAX]; int rear = - 1; int front = - 1; main(){ int add_item; int choice; while (1){ printf("1.Insert element to queue \n"); printf("2.Delete an element from queue\n"); printf("3.Display elements of queue \n"); printf("4.Quit \n"); printf("Enter your choice : "); scanf("%d", &choice); switch (choice){ case 1: insert(); break; case 2: delete(); case 3: display(); break; case 4: exit(1); default: printf("Wrong choice \n"); } } } void insert(){ int add_item; if (rear == MAX - 1) printf("Queue Overflow \n"); else{ if (front == - 1) /*If queue is initially empty */ front = 0; printf("Inset the element in queue : "); scanf("%d", &add_item); rear = rear + 1; array[rear] = add_item; } } void display(){ int i; if (front == - 1) printf("Queue is empty \n"); else{ printf("Queue is : \n"); for (i = front; i <= rear; i++) printf("%d ", array[i]); printf("\n"); } } void delete(){ if (front == - 1 || front > rear){ printf("Queue Underflow \n"); return ; } else{ printf("Element deleted from queue is : %d\n",array[front]); front = front + 1; } }
出力
上記のプログラムを実行すると、次の結果が得られます-
1.Insert element to queue 2.Delete an element from queue 3.Display elements of queue 4.Quit Enter your choice: 1 Inset the element in queue: 12 1.Insert element to queue 2.Delete an element from queue 3.Display elements of queue 4.Quit Enter your choice: 1 Inset the element in queue: 23 1.Insert element to queue 2.Delete an element from queue 3.Display elements of queue 4.Quit Enter your choice: 1 Inset the element in queue: 34 1.Insert element to queue 2.Delete an element from queue 3.Display elements of queue 4.Quit Enter your choice: 2 Element deleted from queue is: 12 Queue is: 23 34 1.Insert element to queue 2.Delete an element from queue 3.Display elements of queue 4.Quit Enter your choice: 2 Element deleted from queue is: 23 Queue is: 34 1.Insert element to queue 2.Delete an element from queue 3.Display elements of queue 4.Quit Enter your choice: 4
-
C言語でswitchステートメントを説明する
複数の決定の中から1つを選択するために使用されます。 「switch」は、整数(または)文字定数のリストに対して値を連続してテストします。一致するものが見つかると、その値に関連付けられたステートメントが実行されます。 構文 構文は以下のとおりです- switch (expression){ case value1 : stmt1; break; case value2 : stmt2; break; - - - - - - &nbs
-
構造概念を使用してC言語でビットフィールドを説明する
ビットフィールドは、変数のサイズをビット単位で指定するために使用されます。通常、構造内で定義されます。 ビットフィールド:1バイト=8ビット たとえば、 例を以下に説明します- Struct info{ int x:2; }; ここで、xは2ビットを占めています。 範囲外のビットフィールドに値を割り当てることは無効です。 サイズとアドレス演算子はビットフィールドに適用できないため、scanfステートメントを使用してビットフィールドの値を入力することはできません。 ビットフィールドに割り当てることができるデータ型は、int、signed int、uns