Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Stack2

  1. #1
    Ngày gia nhập
    03 2008
    Bài viết
    3

    Mặc định Stack2

    Làm giúp em bài này với!
    Tạo 2 stack nối nhau, cuối stack1 nối với stack2,cả 2 cùng có n phần tử,sau đó hiện lên màn hình n ô stack 1 + n ô stack2 và vị trí 2 con trỏ của stack1 và stack2 nằm ngoài các ô đó
    Và hiện menu sau:
    1.Push1
    2.Pop1
    3.Push2
    4.Pop2
    5.Exit
    Nếu chọn push1 thì nhâp số đó vào stack1 từ trái sang phải, stack 2 thì ngược lại. Khi nhập đến ô nào thì con trỏ chỉ vào ô đó rồi di chuyển số nhập vào ô đó luôn (số nhập vào cố đinh ở 1 chỗ rồi di chuyển vào các ô)
    Khi pop ra thì con trỏ sẻ chỉ vào vị trí lấy số ra và ô đó sẽ để trống.
    Giúp minh với!

  2. #2
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Bạn thử coding bài này chưa? Không hiểu rõ đề bài lắm?
    Đưa code hay ý tưởng của bạn xem sao?
    Không biết ghi gì luôn ...

  3. #3
    Ngày gia nhập
    03 2008
    Bài viết
    3

    Mô phỏng màn hình như sau

    Khi gọi push 1=10 thi` con trỏ (là dấu mủi tên) sẽ di chuyển dến ô số 0 và di chuyển số 10 vào ô số 0.
    Khi gọi pop thì ngược lại.Và ô tại vị trí đó sẽ trống.
    Ko biết nên bắt đầu từ đâu nên nhờ mọi người jup với!

  4. #4
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    ht nghĩ, bài này có thể cài đặt theo danh sách liên kết mô phỏng Stack.
    Rồi sử dụng hai stack là ok chứ có gì đâu bạn.
    Người dùng chọn 1 với 2 thì áp dụng với biến stack 1, còn 3 với 4 thì là stack 2.
    Không biết ghi gì luôn ...

  5. #5
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Stack1 = head;
    Stack2 = tail;
    -> double linked list !

  6. #6
    Ngày gia nhập
    01 2008
    Bài viết
    46

    Mặc định Stack2

    cho mình hỏi về thuật toán hiển thị cái menu và thank hiển thi stack theo kiểu hướng đối tượng là như thế nào?(vì hiện giờ mình chỉ biết làm bằng sub-function). mình mới học OOP,chưa hieu rõ lắm về OOP.

  7. #7
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Example : không có copy constructor, không có operator = nha cậu . Phần còn lại tui để dành cho cậu vậy.
    C++ Code:
    1. #include <iostream>
    2. #include <cstdlib>
    3.  
    4. struct Node{
    5.   int data;
    6.   Node* back;
    7.   Node* next;
    8.  
    9.   Node(int data, Node* back, Node* next)
    10.     :data(data), back(back), next(next){
    11.   }
    12.   Node():data(0), back(0), next(0){
    13.   }
    14.   Node(int data):data(data),back(0), next(0){
    15.   }
    16. };
    17.  
    18. class TwoStack{
    19. private:
    20.   Node* t_head;
    21.   Node* t_tail;
    22.   int c_size;
    23. public:
    24.   TwoStack();
    25.   ~TwoStack();
    26.   void first_pop();
    27.   void first_push(const int& item);
    28.   void second_pop();
    29.   void second_push(const int& item);
    30.   void print_test(std::ostream& oss) const;
    31. };
    32.  
    33. TwoStack::TwoStack():t_head(0), t_tail(0), c_size(0){
    34. }
    35.  
    36. TwoStack::~TwoStack(){
    37.   Node* des = t_head;
    38.   while(des != NULL){
    39.       t_head = des->next;
    40.       delete des;
    41.       des = t_head;
    42.   }
    43.   t_head = t_tail = NULL;
    44.   std::cout << "Release Memory...\n";
    45. }
    46.  
    47. void TwoStack::first_pop(){
    48.   if(0 == t_head)
    49.     return;
    50.   else{
    51.     Node* q = t_head;
    52.     t_head = q->next;
    53.     t_head->back = 0;
    54.     delete q;
    55.   }
    56.   c_size--;
    57. }
    58.  
    59. void TwoStack::second_pop(){
    60.   if(0 == t_tail)
    61.     return;
    62.   else{
    63.     Node* q = t_tail;
    64.     t_tail = q->back;
    65.     t_tail->next = 0;
    66.     delete q;
    67.   }
    68.   c_size--;
    69. }
    70.  
    71. void TwoStack::first_push(const int& x){
    72.   Node* n_n = new Node(x);
    73.   if(0 == c_size){
    74.     t_head = t_tail = n_n;
    75.   }
    76.   else{
    77.     n_n->next = t_head;
    78.     t_head = n_n;
    79.   }
    80.   c_size++;
    81. }
    82.  
    83. void TwoStack::second_push(const int& x){
    84.   Node* n_n = new Node(x);
    85.   if(0 == c_size){
    86.     t_head = t_tail = n_n;
    87.   }
    88.   else{
    89.     Node* q = t_tail;
    90.     t_tail->next = n_n;
    91.     t_tail = n_n;
    92.     t_tail->back = q;
    93.   }
    94.   c_size++;
    95. }
    96.  
    97. void TwoStack::print_test(std::ostream& oss)const{
    98.   Node* it = t_head;
    99.   while(it != 0){
    100.     oss << it->data << " ";
    101.     it = it->next;
    102.   }
    103.   oss << "\n\n";
    104. }
    105.  
    106. int main(){
    107.   TwoStack T_T;
    108.   for(int x = 0; x < 10; ++x){
    109.     T_T.first_push(x);
    110.   }
    111.   T_T.print_test(std::cout);
    112.   return 0;
    113. }
    - t_tail = two stack tail
    - t_head = two stack head
    - n_n = new node
    - des = destroyer
    - q = temporary node.
    - c_size = current size

  8. #8
    Ngày gia nhập
    03 2008
    Bài viết
    3

    xài bằng VC ah, C chạy bị lỗi!

  9. #9
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Trích dẫn Nguyên bản được gửi bởi mrsaurieng Xem bài viết
    xài bằng VC ah, C chạy bị lỗi!
    Có nhầm không đó bạn. C++ chứ C gì. Test lại đi
    Không biết ghi gì luôn ...

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