Computer >> Máy Tính >  >> Lập trình >> lập trình C

Giải thích khái niệm ngăn xếp trong ngôn ngữ C

Cấu trúc dữ liệu là một tập hợp dữ liệu được tổ chức theo một cách có cấu trúc. Nó được phân thành hai loại là cấu trúc dữ liệu tuyến tính và cấu trúc dữ liệu phi tuyến tính.

Giải thích khái niệm ngăn xếp trong ngôn ngữ C

Cấu trúc dữ liệu tuyến tính - Ở đây, dữ liệu được tổ chức theo kiểu tuyến tính.

Ví dụ - Mảng, cấu trúc, ngăn xếp, hàng đợi, danh sách được liên kết.

Cấu trúc dữ liệu phi tuyến tính - Ở đây, Dữ liệu được tổ chức theo cách phân cấp.

Ví dụ - Cây, đồ thị, tập hợp, bảng.

Ngăn xếp bằng ngôn ngữ C

Đây là một cấu trúc dữ liệu tuyến tính, nơi dữ liệu chỉ được chèn và xóa ở một đầu.

Hoạt động

  • Đẩy - Chèn một phần tử vào một ngăn xếp.
  • Pop - Xóa một phần tử khỏi ngăn xếp.

Giải thích khái niệm ngăn xếp trong ngôn ngữ C

Giải thích khái niệm ngăn xếp trong ngôn ngữ C

Giải thích khái niệm ngăn xếp trong ngôn ngữ C

Giải thích khái niệm ngăn xếp trong ngôn ngữ C

Giải thích khái niệm ngăn xếp trong ngôn ngữ C

Giải thích khái niệm ngăn xếp trong ngôn ngữ C

 Đã xóa phần tử =50Item =a [top] top - 
  • pop (), pop (), pop (), pop ()
 Phần tử đã xóa =40 Phần tử bị xóa =30 Phần tử bị xóa =20 Phần tử bị xóa =10 
  • Pop ()

Xếp chồng theo dòng

Điều kiện

  • Xếp chồng lên nhau - Cố gắng chèn một phần tử vào một ngăn xếp đầy đủ.

  • Ngăn xếp dưới dòng chảy - Cố gắng xóa một phần tử khỏi ngăn xếp trống.

Các thuật toán cho Push (), Pop (), Display ()

Các thuật toán tương ứng như sau -

Đẩy ()

  • Kiểm tra tình trạng tràn ngăn xếp.
 if (top ==n-1) printf ("stack over flow"); 
  • Nếu không, hãy chèn một phần tử vào ngăn xếp.
 top ++ a [top] =item 

Pop ()

  • Kiểm tra quy trình bên dưới ngăn xếp.
 if (top ==-1) printf ("ngăn xếp dưới luồng"); 
  • Nếu không, hãy xóa phần tử khỏi ngăn xếp.
 item =a [top] top - 

Display ()

  • Kiểm tra luồng ngăn xếp.
 if (top ==-1) printf ("ngăn xếp trống"); 
  • Nếu không, hãy làm theo thuật toán được đề cập bên dưới -
 for (i =0; i  

Ví dụ

Sau đây là chương trình C để thực hiện ngăn xếp bằng cách sử dụng các mảng -

 #include  #include  int top =-1, n, a [100]; main () {int ch; void pop (); void display (); clrscr (); printf ("nhập kích thước của ngăn xếp"); scanf ("% d", &n); printf ("thực hiện ngăn xếp \ n”); printf ("1. push \ n”); printf ("2. Pop \ n”); printf ("3. exit \ n”); do {printf ("nhập sự lựa chọn của bạn"); scanf ("% d”, &ch); switch (ch) {case 1:push (); trưng bày ( ); phá vỡ; trường hợp 2:push (); trưng bày ( ); phá vỡ; case 3:exit}} while (ch> =1 | | ch <=3); getch ();} void push () {int item; if (top ==n-1) printf ("stack over flow") else {printf ("nhập phần tử để chèn") scanf ("% d”, &item); top ++; a [top] =item; }} void pop () {int item; if (top ==-1); printf ("stack under flow"); else {item =a [top]; đứng đầu --; printf ("phần tử bị xóa =% d”, item);}} void display () {int i; if (top ==-1) printf ("stack trống”); else {printf ("nội dung của ngăn xếp là"); for (i =0; i  

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

 nhập kích thước của ngăn xếp =5 [do người dùng cung cấp] Thực hiện ngăn xếp1. Push 2. Pop 3. exitEnter ur choice:1 [do người dùng cung cấp] Nhập một phần tử để chèn:10 Nội dung của ngăn xếp:10Nội dung của ngăn xếp:10Nhập lựa chọn của bạn:1Nhập một phần tử để chèn:2Nội dung của ngăn xếp:10 20Nội dung của ngăn xếp:Phần tử được xóa =20 Nội dung của ngăn xếp là:10 Lựa chọn của bạn nhập:Phần tử được ghép nối:10 Nội dung của ngăn xếp là:ngăn xếp trống