空間複雜度爲O(1)
時間複雜度爲O(n)
算法:
#include"initList.h"
LinkList* reverse(LinkList* L){
LinkList *p;
p = L->next;
L->next = NULL;
while(p!=NULL){
LinkList* temp = (LinkList*)malloc(sizeof(LinkList*));//保持不斷鏈
temp = p->next;
//頭插法
p->next = L->next; //p節點指向node2
L->next = p;
p = temp;
//
}
return L;
}
int main(){
LinkList* L = initList();
L = reverse(L);
printList(L);
}
initList.h
#include<stdio.h>
#include<iostream>
using namespace std;
typedef int Element;
typedef struct Node{
Element data;
struct Node *next;
}LinkList;
//初始化鏈表,帶頭節點,尾插法
LinkList* initList(){
LinkList* rear;
LinkList* list;
list = (LinkList*)malloc(sizeof(LinkList));
list->next = NULL;
rear = list;
for(int i=0;i<10;i++){
LinkList *s = (LinkList*)malloc(sizeof(LinkList));
s->data = i;
rear->next = s;
rear = s;
}
rear->next = NULL;//不賦值尾NULL,將會不斷輸出
return list;
}
void printList(LinkList* L){
while(L->next!=NULL){
cout<<L->next->data<<" ";
L = L->next;
}
cout<<endl;
}