-, typedef, , . C ++.
typedef struct Node *NodePtr;
struct Node
{
int x;
NodePtr next;
};
, . , : " !" . :
struct Node
{
int x;
struct Node *next;
};
, , , , NodePtr node, , . , . ( ), ( = P).
: , typedef ed ed, : . :
Node* a, b;
typedef struct Node *NodePtr; :
NodePtr a, b;
C, , , , .
, , , , , . , " node". if (head){} else{}, - . , : :
NodePtr head = NULL;
NodePtr* ptr = &head;
int n;
while (cin >> n)
{
*ptr = new Node;
(*ptr)->x = n;
ptr = &(*ptr)->next;
}
(*ptr)->next = NULL;
- NULL
- a Node - ( ), . , node. . :
ptr. - while. node, ,
ptr ( , *ptr). head, head Node. next Node. , - , , . - Node
next, NULL, . . ( , ), , , , "" NULL. , . : , ? : &head, , (a NULL head pointer), .
, , .
head ===> NULL;
ptr --^
:
head ===> node(1)
next
ptr ------^
head ===> node(1)
next ===> node(2)
next
ptr ----------------^
head ===> node(1)
next ===> node(2)
next ===> node(3)
next
ptr --------------------------^
, (*ptr = NULL;) :
head ===> node(1)
next ===> node(2)
next ===> node(3)
next ===> NULL;
ptr --------------------------^
, head ( node). , ptr , , ( ) next Node.
, . , ( head ptr) Queue; - (ptr), (head), . -, std::queue<>, " ".
20 , , . (: , )
#include <iostream>
using namespace std;
typedef struct Node *NodePtr;
struct Node
{
int x;
NodePtr next;
};
int main()
{
NodePtr head = NULL;
NodePtr* ptr = &head;
for (int n=1;n<=20;++n)
{
*ptr = new Node;
(*ptr)->x = n;
ptr = &(*ptr)->next;
}
*ptr = NULL;
NodePtr p = head;
while (p)
{
cout << p->x << ' ';
p = p->next;
}
cout << endl;
while (head)
{
NodePtr victim = head;
head = head->next;
delete victim;
}
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20