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