Mọi người ơi, cho e hỏi là dòng: typedef struct Node* stack; có ý nghĩa là gì vậy ạ?

#include<iostream>

using namespace std;

//khai báo cấu trúc Node

struct Node {

          int data;

     Node *next;

};

typedef struct Node *stack;

//khai báo cấu trúc stack

struct Stack{

     Node *head;

     Node *tail;

};

Nếu bạn đang code C thì:

*typedef struct Node stack; là dòng tạo ra một bí danh alias cho struc Stack, tên của alias là Node.
Như vậy kể từ này về sau Node là một kiểu dữ liệu và cấu trúc của nó là của Stack.

Theo mình đoán thì đoạn code đó phải là *typedef struct Node Node; thì phù hợp hơn, bởi bạn đang khai báo struct Node.

Tại sao cần khai báo như vậy? Bởi vì trong C khi sử dụng struct bạn phải thêm từ struct phía trước nữa.

struct Node {
     int data;
     Struct Node *next;
};

Nhưng khi bạn khai báo một alias Node rồi thì không cần:

struct Node {
     int data;
     Node *next;
};