1.定义
//单向
struct Node{
int value;
Node * next;
};
//双向
struct DNode{
int value;
DNode * left;
DNode * right;
};
2.基本操作
(1)插入节点
//p节点后插入值为i的节点
void insertNode(Node *p, int i){
Node* node = new Node;
node->value = i;
node->next = p->next;
p->next = node;
}
(2)删除节点
void deleteNode(Node *p){
p->value = p->next->value;
p->next = p->next->next;
}
(3)反向遍历链表
//1.stack
void printLinkedListReversinglyByStack(Node *head){
stack<Node* > nodesStack;
Node* pNode = head;
//遍历链表
while (pNode != NULL) {
nodesStack.push(pNode);
pNode = pNode->next;
}
while (!nodesStack.empty()) {
pNode=nodesStack.top();
printf("%d\t", pNode->value);
nodesStack.pop();
}
}
//2.递归
void printLinkedListReversinglyRecursively(Node *head){
if (head!=NULL) {
if (head->next!=NULL) {
printLinkedListReversinglyRecursively