Trang 5 trên tổng số 5 Đầu tiênĐầu tiên ... 345
Từ 41 tới 49 trên tổng số 49 kết quả

Đề tài: Ngăn xếp và hàng đợi (Stack and Queue) - Nguyên tắc và cài đặt trên C++

  1. #41
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    768

    Mặc định Ngăn xếp và hàng đợi (Stack and Queue) - Nguyên tắc và cài đặt trên C++

    Trích dẫn Nguyên bản được gửi bởi fithou91192 Xem bài viết
    vấn đề ở đây của mình là xd queue bằng dslk nên mình mới có class dslk chứ và ở đây mình muốn gộp thằng class node và class dslk vào cùng 1 class có phải là ngắn gọn hơn không
    có gì khác nhau giữa queue và stack trong cách xây dựng chứ
    Nó chỉ khác nhau ở nguyên tắc FIFO và LIFO thôi chứ còn lại thì giống nhau
    gọn thì chưa biết nhưng nói chung là bạn sai về bản chất. Nếu xây dựng dslk rồi mới xd queue thì bạn sẽ làm nhiều hơn xây dựng mỗi queue không 1 class.
    do phải đảm bảo:
    - xây dựng class node
    - xây dựng class dslk
    - xây dựng class queue kế thừa dslk

    nếu bạn xd mỗi queue không thì chỉ cần
    - xây dựng class node
    - xây dựng class queue

    Còn nếu bạn làm thư viện thì đương nhiên làm dslk sẽ ngắn hơn. Vì từ nó có thể kế thừa sang stack và queue
    Còn một điểm nữa là bạn hiểu sai đề bài: xây dựng bằng dslk không có nghĩa là ta phải xây dựng class dslk. nó không đơn thuần là một cấu trúc dữ liệu tuyến tính. Nó còn là một trong 2 cách xây dựng nên các cấu trúc dữ liệu khác (hiểu theo cách này phổ biến hơn )

  2. #42
    Ngày gia nhập
    03 2011
    Nơi ở
    Hà Nội
    Bài viết
    89

    Trích dẫn Nguyên bản được gửi bởi beautifulsoul84hung Xem bài viết
    có gì khác nhau giữa queue và stack trong cách xây dựng chứ
    Nó chỉ khác nhau ở nguyên tắc FIFO và LIFO thôi chứ còn lại thì giống nhau
    gọn thì chưa biết nhưng nói chung là bạn sai về bản chất. Nếu xây dựng dslk rồi mới xd queue thì bạn sẽ làm nhiều hơn xây dựng mỗi queue không 1 class.
    do phải đảm bảo:
    - xây dựng class node
    - xây dựng class dslk
    - xây dựng class queue kế thừa dslk

    nếu bạn xd mỗi queue không thì chỉ cần
    - xây dựng class node
    - xây dựng class queue

    Còn nếu bạn làm thư viện thì đương nhiên làm dslk sẽ ngắn hơn. Vì từ nó có thể kế thừa sang stack và queue
    Còn một điểm nữa là bạn hiểu sai đề bài: xây dựng bằng dslk không có nghĩa là ta phải xây dựng class dslk. nó không đơn thuần là một cấu trúc dữ liệu tuyến tính. Nó còn là một trong 2 cách xây dựng nên các cấu trúc dữ liệu khác (hiểu theo cách này phổ biến hơn )
    uhm mình có vẻ gì đó hiểu chút rồi thank bạn nhiều ngồi đọc lại lý thuyết rồi ngẫm code sau

  3. #43
    Ngày gia nhập
    12 2011
    Bài viết
    1

    Wink Các bác giúp em giải quyết bài toán này với:

    Viết chương trình Pascal cài đặt cấu trúc ngăn xếp (Stack) bằng danh sách liên kết đơn.
    Nhập vào một số nguyên dương, sử dụng ngăn xếp để đưa ra dạng số nhị phân của số
    nguyên đó. Ví dụ: Nhập vào 13, đưa ra 1101.

    Bác nào giải được thì giải giúp em với. Cuối tuần này em phải nộp rồi mà vẫn chưa viết được.
    Thank's các bác nhiều!

  4. #44
    Ngày gia nhập
    04 2012
    Bài viết
    1

    Trích dẫn Nguyên bản được gửi bởi iamvtn Xem bài viết
    Sử dụng stack để đổi cơ số.

    C++ Code:
    1. class List;
    2. class Node
    3. {
    4.     private:
    5.     int data;
    6.       Node *next;
    7.    public:
    8.     Node(int d = 0,Node *p = NULL)
    9.     {
    10.         data = d;
    11.         next = p;
    12.       }
    13.       int get()
    14.       {
    15.         return data;
    16.       }
    17.       friend class List;
    18. };
    19. class List
    20. {
    21.     private:
    22.     Node *head;
    23.    public:
    24.     List() {head = NULL;}
    25.       ~List()
    26.       {
    27.         head = NULL;
    28.       }
    29.       int get()
    30.       {
    31.         return head->data;
    32.       }
    33.       void chen_dau(int d)
    34.       {
    35.         Node *p = new Node(d);
    36.          if(head == NULL)
    37.                 head=p;
    38.          else
    39.          {
    40.             p->next = head;
    41.             head = p;
    42.          }
    43.       }
    44.       void xoa_dau()
    45.       {
    46.         if(head)
    47.         {
    48.             Node *p = head;
    49.             head = head->next;
    50.             p->next = NULL;
    51.             delete p;
    52.         }
    53.       }
    54.       void chen_cuoi(int d)
    55.       {
    56.         Node *p = new Node(d);
    57.         Node *q = head;
    58.          if(head == NULL)
    59.         head=p;
    60.         else
    61.         {
    62.             while(q->next)
    63.             q = q->next;
    64.             q->next = p;
    65.         }
    66.       }
    67.       void xoa_cuoi()
    68.       {
    69.         if(head)
    70.         if(head->next == NULL)
    71.         {
    72.             delete head;
    73.             head=0;
    74.         }
    75.         else
    76.         {
    77.             Node *p,*q;
    78.             p=head;
    79.             p=p->next;
    80.             while(q->next)
    81.             {
    82.                 p = q;
    83.                 q = q->next;
    84.             }
    85.             delete q;
    86.             p->next = NULL;
    87.         }
    88.       }
    89.       bool empty()
    90.       {
    91.         if(head == NULL)
    92.             return true;
    93.          else
    94.             return false;
    95.       }
    96.       void hienthi()
    97.       {
    98.         Node *p = head;
    99.             while(p)
    100.         {
    101.             cout<<p->data<<"\t";
    102.             p = p ->next;
    103.         }
    104.       }
    105. };
    106. class stack
    107. {
    108.     private:
    109.         List a;
    110.    public:
    111.     void push(int d)
    112.       {
    113.         a.chen_dau(d);
    114.       }
    115.       int get()
    116.       {
    117.         return a.get();
    118.       }
    119.       void pop()
    120.       {
    121.         a.xoa_dau();
    122.       }
    123.       void hienthi()
    124.       {
    125.          a.hienthi();
    126.       }
    127.       bool empty()
    128.       {
    129.         if(a.empty() == true)
    130.             return true;
    131.          else
    132.             return false;
    133.       }
    134. };
    135.  
    136. void main()
    137. {
    138.     stack a;
    139.    int so,coso;
    140.    float sodu;
    141.    cout<<"Nhap vao so: ";
    142.    cin>>so;
    143.     cout<<"Co so la bao nhieu (2 or 4 or 8): ";
    144.    cin>>coso;
    145.    while(so != 0)
    146.    {
    147.     sodu = so % coso;
    148.       a.push(sodu);
    149.       so = so / coso;
    150.    }
    151.    cout<<"So vua chuyen la: ";
    152.    for(int i = 0;;i++)
    153.    {
    154.         cout<<a.get();
    155.       a.pop();
    156.       if(a.empty())
    157.       break;
    158.    }
    159.    getch();
    160. }
    //anh chị toan dung tren vitusa thui ak. em muon hoi khi dung stack tren dev C thi nhu the nao! cho em mot vi du duoc ko?

  5. #45
    Ngày gia nhập
    03 2013
    Bài viết
    1

    Mặc định Mọi người có thể hướng dẫn em cách dùng stack để khư đệ quy không ? Xin Chân thành cám ơn !

    -Cách sử dụng stack khử đệ quy.
    -Chỉ một số ví dụ cụ thể(nếu được).

  6. #46
    Ngày gia nhập
    12 2012
    Nơi ở
    TpHCM
    Bài viết
    1

    Mặc định Ngăn xếp và hàng đợi (Stack and Queue) - Nguyên tắc và cài đặt trên C++

    bạn ơi cho mình hỏi nếu giả sử trường hợp QUEUE bị đầy ảo như là tail=n-1 nhưng trước nó thì ko có phần tử nào khi đó ta ko thể chèn vào cuối dk
    trên 1 số diễn đàn cho biết khắc phục bằng mảng vòng tròn vậy thuật toán của mảng vòng tròn như thế nào z bạn
    mình dịch phần tử cuối về đầu mảng rồi chèn như bình thường được ko hay chỉ có mảng vòng tròn là dk thôi bạn giải thích dùm mình tks bạn

  7. #47
    Ngày gia nhập
    04 2014
    Bài viết
    1

    Angry giúp e bài này với ạ :3

    Xây dựng lớp hàng đợi ưu tiên (priority queue) với các nút là số nguyên chỉ độ ưu
    tiên, các phương thức thêm vào hàng đợi, xóa nút có độ ưu tiên cao nhất(nút đầu),
    duyệt hàng đợi, xóa toàn bộ hàng đợi.

  8. #48
    Ngày gia nhập
    06 2014
    Bài viết
    3

    cho mình hỏi Queue sử dụng dslk kép sẽ như thế nào?
    các bác làm hộ với viết các thao tác của Queue bằng danh sách liên kết kép được ko? Ngôn ngữ C nhé vì C++ mình chưa được học )

  9. #49
    Ngày gia nhập
    01 2015
    Bài viết
    19

    Xin mạo nguội code chuyển cơ số của tớ
    Code:
    #include <iostream>
    using namespace std;
    #define MAX 100
    struct Stack {
    	int data[MAX];
    	int top;
    };
    void Initialize (Stack *s){
    	s->top = -1;
    }
    bool IsEmpty (Stack l){
    	return l.top == -1;
    }
    void Push (Stack *s, int x){
    	if (s->top < MAX){
    		s->data[++(s->top)] = x;
    	}else{
    		cout<<"\nStack is full!";
    	}
    }
    int Pop (Stack *s){
    	if (!IsEmpty(*s))
    	return s->data[(s->top)--];
    }
    Stack ChangeBase (int num, int base){
    	Stack s;
    	Initialize(&s);
    	int du;
    	while (num != 0){
    		du = num%base;
    		Push(&s,du);
    		num/= base;
    	}
    	return s;
    }
    void Output (Stack s){
    	while (s.top >= 0){
    		cout<<s.data[s.top--];
    	}
    	cout<<endl;
    }
    int main (){
    	int num,base;
    	do {
    		cout<<"\nEnter number as Integer : ";cin>>num;
    	}while (num < 0);
    	do {
    		cout<<"\nEnter base you want to convert to (from 2 to "<<num<<" ) : ";cin>>base;
    	}while (base < 2 || base > num);
    	Output(ChangeBase(num,base));
    }

Trang 5 trên tổng số 5 Đầu tiênĐầu tiên ... 345

Các đề tài tương tự

  1. Trả lời: 0
    Bài viết cuối: 20-05-2011, 10:39 PM
  2. Bài tập C++ Sử dụng cấu trúc dữ liệu Queue thực hiện trên DSLK ĐƠN để lưu trữ 1 dãy các số nguyên
    Gửi bởi kaner1111 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 18-05-2011, 10:42 AM
  3. Stack, ngăn xếp - Thiết lập và ứng dụng stack trong C
    Gửi bởi PoPoPoPo trong diễn đàn Thủ thuật, Tutorials CTDL & Giải thuật
    Trả lời: 8
    Bài viết cuối: 15-11-2010, 11:24 PM
  4. Nhược điểm của ngăn xếp stack trên C?
    Gửi bởi gianghien1404 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 26
    Bài viết cuối: 24-07-2010, 12:45 PM
  5. Stack và Queue trên C++. Mọi người cùng góp ý nhé!
    Gửi bởi hoangedward trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 7
    Bài viết cuối: 29-03-2010, 08:44 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn