Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 11
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

  2. #2
    stack và queue đều dùng array hết mà ta[IMG]images/smilies/lick.gif[/IMG][IMG]images/smilies/lick.gif[/IMG][IMG]images/smilies/lick.gif[/IMG]

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi baolonght
    Mấy anh cho em hỏi cái là Stack, Queue có phải là DSLK không? và vì sao ạ [IMG]images/smilies/smile.png[/IMG]
    e chỉ bít sơ sơ cái đó nó giống như data link vậy đó

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Tuỳ vào cài đặt thôi bạn à, có thể cài đặt bằng cách dùng mảng hoặc danh sách liên kết.

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi birthis
    Đọc kỹ nhé: Hai cái trên là cài đặt bằng danh sách móc nối. Có nghĩa là với stack và queue ta chọn cách cài đặt nào cũng được, miễn sao nó làm được các chức năng của stack và queue.
    hình như mình nhớ hok lầm thì stack va queue chi được cài đặt bằng mảng mà;
    chẳng hạn như cái khai báo của bạn là: "
    typedef struct Node
    {
    float value;
    Node *prev;
    };

    typedef struct
    {
    Node *top;
    }Stack;
    "
    mình thấy nó vừa thừa mà vừa thiếu.
    thứ nhất: không cần phải khai báo 2 struct làm j`
    thứ 2: ban khai báo prev là thừa bởi stack đã có top lưu trữ vị trí ùi, nếu bạn mún biết giá trị trước thì bạn phải xóa phần tử tại vị trí top khi đó vi trí phần tử sau sẽ đụơc gán cho top như vậy prev đâu đc sử dụng
    stack và queue là 2 loại đặc biệt nên không thể khai báo dslk được đâu

  6. #6
    Trích dẫn Gửi bởi birthis
    Đọc kỹ nhé: Hai cái trên là cài đặt bằng danh sách móc nối. Có nghĩa là với stack và queue ta chọn cách cài đặt nào cũng được, miễn sao nó làm được các chức năng của stack và queue.
    Theo lý thuyết mình học thì stack và queue thì dùng mảng để làm. Còn theo cách của bạn thì không biết nó có thể thực hiện đầy đủ chức năng , nhưng không biết có gọi là stack với queue hok, vì cái này mình chưa biết. Nên chỉ biết thế, sử dụng mảng! [IMG]images/smilies/biggrin.png[/IMG][IMG]images/smilies/smile.png[/IMG]

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    @nunkstop
    uh bạn mới học đến dùng mảng thì dùng mảng đi, khi nào học cấu trúc dữ liệu và giải thuật sẽ biết.
    Stack có thể tham khảo ở đây: http://en.wikipedia.org/wiki/Stack_(data_structure)
    Queue có thể tham khảo ở đây: http://en.wikipedia.org/wiki/Queue_(data_structure)
    @shinichi_kudo1091587
    1. Mình khai báo 2 struct mục đích là để cho nó rõ ràng.
    2. Mình dùng danh sách liên kết để cài đặt nên phải dùng đến con trỏ prev.
    3. Stack and queue đặc biệt thật, nhưng mà chỉ về tính chất thôi. Còn cài đặt như thế nào mà đảm bảo được tính chất của nó là được, không ép buộc phải dùng mảng.
    [IMG]images/smiliesot_talking.gif[/IMG]

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi nunkstop
    stack và queue đều dùng array hết mà ta[IMG]images/smilies/lick.gif[/IMG][IMG]images/smilies/lick.gif[/IMG][IMG]images/smilies/lick.gif[/IMG]
    Stack

    Mã:
    #include <iostream>#include <string.h>using namespace std; //---------------------------  typedef struct Node{    float value;    Node *prev;}; typedef struct{    Node *top;}Stack; //-----------------------------void CreatStack(Stack &p);void Push(Stack &p,float x);void Pop(Stack &p,float &x);void DestroyStack(Stack &p);int  isEmpty(Stack p);void menu();//-----------------------------  void main(){    Stack S;    float tmp;    menu();    for(;;)    {        char ch[1];        do        {            cout<<"
    Choice: ";            cin>>ch;        }        while(atoi(ch)<1 || atoi(ch)>7);        switch (atoi(ch))        {        case 1:            CreatStack(S);            break;        case 2:            cout<<"
    Float number: ";            cin>>tmp;            Push(S,tmp);            break;        case 3:            if(!isEmpty(S))            {                Pop(S,tmp);                cout<<"
    Popped number:"<<tmp;            }            break;        case 4:            cout<<"
    All in stack:";            while(!isEmpty(S))            {                Pop(S,tmp);                cout<<tmp<<" ";            }            break;        case 5:            if(isEmpty(S)) cout<<"
    Stack is empty";            else cout<<"
    Stack isn't empty";            break;        case 6:            DestroyStack(S);            cout<<"
    Stack was destroyed.";            break;        case 7:            exit(1);        };    }    system("pause");}void menu(){    system("cls");    cout<<"
    Program to test a stack";    cout<<"
    Please choose a choice:";    cout<<"
    1.Create a stack";    cout<<"
    2.Push a float number";    cout<<"
    3.Pop from stack";    cout<<"
    4.Pop all from stack";    cout<<"
    5.Checking stack is empty";    cout<<"
    6.Destroy stack";    cout<<"
    7.Exit";}//Stack//----------------------------------------------------------------------void CreatStack(Stack &p){    p.top = NULL;} void Push(Stack &p,float x){    Node *temp;    temp = new Node;    if(temp == NULL)    {        cout<<"
    Stack is full";        return;    }    else    {        temp->value = x;        temp->prev = p.top;        p.top = temp;    }} void Pop(Stack &p,float &x){    if (isEmpty(p))    {        cout<<"
    Stack is empty";        return;    }    else    {        x = (p.top)->value;        Node *temp = (p.top)->prev;        delete p.top;        p.top = temp;    }} int isEmpty(Stack p){    if (p.top == NULL) return 1;    else return 0;} void DestroyStack(Stack &p) {     Node *tmp;     while(!isEmpty(p))     {         tmp = (p.top)->prev;         delete p.top;         p.top = tmp;     } }//----------------------------------------------------------------------//
    Queue

    Mã:
    #include <iostream>#include <string.h>using namespace std; //---------------------------  typedef struct Node{    float value;    Node *next;    Node *prev;}; typedef struct{    Node *front;    Node *rear;}Queue; //-----------------------------void CreatQueue(Queue &p);void Enqueue(Queue &p,float x);void Dequeue(Queue &p,float &x);void DestroyQueue(Queue &p);int  isEmpty(Queue p);void menu();//-----------------------------  void main(){    Queue S;    float tmp;    menu();    for(;;)    {        char ch[2];        do        {            cout<<"
    Choice: ";            cin>>ch;        }        while(atoi(ch)<1 || atoi(ch)>7);        switch (atoi(ch))        {        case 1:            CreatQueue(S);            break;        case 2:            cout<<"
    Float number: ";            cin>>tmp;            Enqueue(S,tmp);            break;        case 3:            if (!isEmpty(S))             {                Dequeue(S,tmp);                cout<<"
    Dequeued number:"<<tmp;            }            break;        case 4:            cout<<"
    All in Queue:";            while(!isEmpty(S))            {                Dequeue(S,tmp);                cout<<tmp<<" ";            }            break;        case 5:            if(isEmpty(S)) cout<<"
    Queue is empty";            else cout<<"
    Queue isn't empty";            break;        case 6:            DestroyQueue(S);            cout<<"
    Queue was destroyed.";            break;        case 7:            exit(1);        };    }    system("pause");}void menu(){    system("cls");    cout<<"
    Program to test a Queue";    cout<<"
    A Queue has created. Please choose a choice:";    cout<<"
    1.Create a Queue";    cout<<"
    2.Enqueue a float number";    cout<<"
    3.Dequeue from Queue";    cout<<"
    4.Dequeue all from Queue";    cout<<"
    5.Checking Queue is empty";    cout<<"
    6.Destroy Queue";    cout<<"
    7.Exit";}//Queue//----------------------------------------------------------------------void CreatQueue(Queue &p){    p.front = NULL;    p.rear = NULL;}//Hàng đợi nạp phần tử vào cuối danh sách móc nốivoid Enqueue(Queue &p,float x){    Node *temp;    temp = new Node;    if(temp == NULL)    {        cout<<"
    Queue is full";        return;    }    else if (!isEmpty(p))    {        temp->value = x;    //Cài đặt nút temp        temp->next = NULL;  //với tư cách là        temp->prev = p.rear;/út cuối        p.rear->next = temp;        p.rear = temp;    }    else    {        temp->value = x;        temp->next = NULL;        temp->prev = NULL;        p.front = p.rear = temp;    }}//Hàng đợi lấy phần tử từ đầu danh sách móc nốivoid Dequeue(Queue &p,float &x){    if (isEmpty(p))    {        cout<<"
    Queue is empty";        return;    }    else if (p.front != p.rear)//Nếu hàng đợi có hơn 1 phần tử    {        x = (p.front)->value;        Node *temp = p.front;        p.front = temp->next;        delete temp;    }    else//Hàng đợi có 1 phần tử    {        x = (p.front)->value;        delete p.front;        p.front = p.rear = NULL;    }} int isEmpty(Queue p){    if (p.front == NULL && p.rear == NULL) return 1;    else return 0;} void DestroyQueue(Queue &p) {     Node *tmp;     if (!isEmpty(p))     {         while(p.front != NULL)         {             tmp = (p.front)->next;             delete p.front;             p.front = tmp;         }         p.front = p.rear = NULL;     } }//----------------------------------------------------------------------//
    Thế cách cài đặt 2 cái trên là gì vậy. [IMG]images/smilies/biggrin.png[/IMG]

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Thế cách cài đặt 2 cái trên là gì vậy. [IMG]images/smilies/biggrin.png[/IMG]
    chak là LIST [IMG]images/smilies/lick.gif[/IMG]

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi nunkstop
    chak là LIST [IMG]images/smilies/lick.gif[/IMG]
    Đọc kỹ nhé: Hai cái trên là cài đặt bằng danh sách móc nối. Có nghĩa là với stack và queue ta chọn cách cài đặt nào cũng được, miễn sao nó làm được các chức năng của stack và queue.

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •