Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語を使用してキュー内の要素を削除することを説明する


データ構造は、構造化された方法で編成されたデータのコレクションです。以下に説明するように、2つのタイプに分けられます-

  • 線形データ構造 −データは直線的に編成されます。たとえば、配列、構造、スタック、キュー、リンクリスト。

  • 非線形データ構造 −データは階層的に編成されています。たとえば、ツリー、グラフ、セット、テーブル。

キュー

これは線形データ構造であり、挿入は後端で行われ、削除は前端で行われます。

C言語を使用してキュー内の要素を削除することを説明する

キューの順序は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

  1. C言語でswitchステートメントを説明する

    複数の決定の中から1つを選択するために使用されます。 「switch」は、整数(または)文字定数のリストに対して値を連続してテストします。一致するものが見つかると、その値に関連付けられたステートメントが実行されます。 構文 構文は以下のとおりです- switch (expression){    case value1 : stmt1;       break;    case value2 : stmt2;       break;    - - - - - - &nbs

  2. 構造概念を使用してC言語でビットフィールドを説明する

    ビットフィールドは、変数のサイズをビット単位で指定するために使用されます。通常、構造内で定義されます。 ビットフィールド:1バイト=8ビット たとえば、 例を以下に説明します- Struct info{    int x:2; }; ここで、xは2ビットを占めています。 範囲外のビットフィールドに値を割り当てることは無効です。 サイズとアドレス演算子はビットフィールドに適用できないため、scanfステートメントを使用してビットフィールドの値を入力することはできません。 ビットフィールドに割り当てることができるデータ型は、int、signed int、uns