Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Contoh program C yang menunjukkan penggunaan tatasusunan panjang berubah-ubah

Contoh program C yang menunjukkan penggunaan tatasusunan panjang berubah-ubah

WBOY
WBOYke hadapan
2023-08-28 19:45:031346semak imbas

Contoh program C yang menunjukkan penggunaan tatasusunan panjang berubah-ubah

Katakan kita bertanggungjawab membina sistem perpustakaan untuk memantau dan menyoal pelbagai operasi perpustakaan. Kini kami diminta untuk melaksanakan tiga arahan berbeza yang melaksanakan operasi berikut:

  • Menggunakan arahan 1, kita boleh merekodkan sisipan buku dengan halaman y pada rak buku x.

  • Menggunakan arahan 2, kita boleh mencetak nombor halaman buku ke-y di rak buku x.

  • Menggunakan arahan 3, kita boleh mencetak bilangan buku di rak buku x.

Arahan ini diberikan dalam bentuk tatasusunan 2D dengan format {command type, x, y}. Jika tiada nilai y, nilai lalai ialah 0. Kami mencetak hasil arahan yang diberikan.

Jadi, jika input adalah seperti berikut: Bilangan rak buku = 4, Bilangan pertanyaan = 4, Tatasusunan input = {{1, 3, 23}, {1, 4, 128}, {2, 3, 0} , {3, 4 ,0}}; maka outputnya ialah

23
1
Command 1 inserts a book with 23 pages on shelf 3.
Command 2 inserts a book with 128 pages on shelf 4.
Command 3 prints the page number of book 0 on shelf 3.
Command 4 prints the number of books on shelf 3.

Untuk menyelesaikan masalah ini, kita akan mengikuti langkah berikut:

  • b := Tatasusunan saiz s
  • p := Tatasusunan saiz baharu s
  • Inisialisasi i := 0, apabila i
  • b[i] := 0
  • p[i] := Tatasusunan baharu
  • Mulakan loopCount := 0, apabila loopCount
  • qtype := q_array[loopCount, 0]
  • Jika qtype adalah sama dengan 1, maka −
    • := q_array[loopCount, 1]
    • y := q_array[loopCount, 2]
    • b[x] := b[x] + 1
    • p[x] := Lepaskan objek yang ditunjuk oleh p[x] ] dan kembalikan saiz
    • b [x]
    • p[x, b[x] - 1] = y
  • Jika tidak, apabila qtype adalah sama dengan 2, maka −
    • x := q_array[ loopCount, 1]
    • y := q_array[ loopCount, 2]
    • Cetak p[x, y]
  • Jika tidak
    • x := q_array[loopPrint, 1]
    . p[i] tidak kosong, maka −
  • Lepaskan ingatan yang diperolehi oleh p[i]
    • Jika p tidak kosong, maka −
    Lepaskan ingatan yang diperolehi oleh p
      Mari kita lihat pelaksanaan berikut untuk memahami dengan lebih baik −
    • #include <stdio.h>
      #include <stdlib.h>
      
      void solve(int s, int q, int q_array[][3])
      {
            int* b;
            int** p;
         b = (int*)malloc(sizeof(int)*s);
         p = (int**)malloc(sizeof(int*)*s);
         for(int i = 0; i < s; i++)
         {
            b[i] = 0;
            p[i] = (int*)malloc(sizeof(int));
         }
         int loopCount;
         for(loopCount = 0; loopCount < q; loopCount++)
         {
            int qtype;
            qtype = q_array[loopCount][0];
            if (qtype == 1)
            {
               int x, y;
               x = q_array[loopCount][1];
                  y = q_array[loopCount][2];
               b[x] += 1;
               p[x] = realloc(p[x], b[x]*sizeof(int));
               p[x][b[x] - 1] = y;
            }
            else if (qtype == 2)
            {
               int x, y;
               x = q_array[loopCount][1];
                  y = q_array[loopCount][2];
               printf("%d</p><p>", p[x][y]);
            }
            else
            {
               int x;
               x = q_array[loopCount][1];
               printf("%d</p><p>", b[x]);
            }
         }
         if (b)
            free(b);
         for (int i = 0; i < s; i++)
            if (p[i])
               free(p[i]);
         if (p)
            free(p);
      }
      int main() {
         int input_arr[][3] = {{1, 3, 23}, {1, 4, 128}, {2, 3, 0}, {3, 4, 0}};
            solve(4, 4, input_arr);
      }
    input
  • int input_arr[][3] = {{1, 3, 23}, {1, 4, 128}, {2, 3, 0}, {3, 4, 0}};
    solve(4, 4, input_arr);
    output

    23
    1

    Atas ialah kandungan terperinci Contoh program C yang menunjukkan penggunaan tatasusunan panjang berubah-ubah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam