csdn第一篇博客,之前的博客一直放在自己的网站上,可是现在觉得wordpress好不方便,还是在CSDN上写吧,从现在开始记录找工作的点点滴滴。
反转单链表,超级热门的面试题,反正我是看到不下十次了,有递归和非递归两种方法
第一种:非递归方法
#include <iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
/*链表结构体*/
struct Node{
int data;
struct Node* next;
};
static void reverse(struct Node** head_ref){
struct Node* prev =NULL;
struct Node* current =*head_ref;
struct Node* next;
while(current!=NULL){
next =current->next;
current->next=prev;
prev=current;
current=next;
}
*head_ref=prev;
}
void push(struct Node** head_ref,int new_data){
struct Node* new_node=
(struct Node*)malloc(sizeof(struct Node));
new_node->data=new_data;
new_node->next=(*head_ref);
(*head_ref)=new_node;
}
void printList(struct Node *head){
struct Node *temp=head;
while(temp!=NULL){
cout<<temp->data<<" ";
temp=temp->next;
}
}
int main()
{
struct Node *head=NULL;
push(&head,2);
push(&head,4);
push(&head,6);
push(&head,8);
printList(head);
reverse(&head);
cout<<endl;
printList(head);
return 0;
}