您的位置:首页 > 理论基础 > 数据结构算法

数据结构-链表反置

2015-12-30 20:59 519 查看
#include<cstdio>
#include<cstdlib>

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

void Add(Node **head, int num){
Node* node = new Node;
node->num = num;
node->next = *head;
*head = node;
}

void PrintLink(Node *head){
Node *temp = head;
while(temp!=NULL){
printf("%d ", temp->num);
temp = temp->next;
}
printf("\n");
}

void ReverseLink(Node **head){
Node* prev = NULL;
Node* curr = *head;
Node* next;
while(curr != NULL){
next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
*head = prev;
}

Node* ReverseLink2(Node* head){
if(NULL == head || head->next == NULL)
return head;
Node *temp = ReverseLink2(head->next);
head->next->next = head;
head->next = NULL;
return temp;
}

int main(){
Node *head = NULL;
Add(&head, 1);
Add(&head, 2);
Add(&head, 3);
Add(&head, 4);
Add(&head, 5);
PrintLink(head);
head = ReverseLink2(head);
ReverseLink(&head);
PrintLink(head);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: