#include <stdio.h>
#include <stack>
#include <string>
#include <iostream>
using namespace std;
#include <stack>
typedef struct Link{
int value;
struct Link * LinkNext ;
}Link,* LinkList;
void initList(LinkList * head ){
if (head != NULL) {
for (
int i=
0; i<
10; i++) {
LinkList p = (LinkList)
malloc(
sizeof(Link));
p->value = i;
p->LinkNext = (*head)->LinkNext;
(*head)->LinkNext = p;
}
}
}
LinkList reverse(LinkList head){
LinkList last = NULL ;
LinkList start = head ;
while (start != NULL) {
LinkList temp = start->LinkNext;
start->LinkNext = last ;
last = start ;
start = temp ;
}
return last;
}
LinkList reverse_DG(LinkList start , LinkList last = NULL){
if(start == NULL)
return last;
LinkList temp = start->LinkNext;
start->LinkNext = last;
return reverse_DG(temp , start);
}
void printList(LinkList start){
if (start != NULL) {
while (start != NULL) {
cout<<start->value<<
" ";
start = start->LinkNext;
}
}
}
void Print_method1(LinkList head){
if (head == NULL) {
return ;
}
Print_method1(head->LinkNext);
cout<<head->value<<
" ";
}
void Print_methid2(LinkList head){
if(head != NULL || head->LinkNext != NULL){
stack<int> list ;
while( head !=NULL ){
list.push(head->value);
head = head->LinkNext;
}
while(!
list.empty()){
cout<<
list.top()<<
" ";
list.pop();
}
}
}
int main(
int argc ,
const char * argv[]) {
LinkList head = (LinkList)
malloc(
sizeof(Link));
head->LinkNext = NULL;
initList(&head);
cout<<
"原始的数值:"<<endl;
printList(head->LinkNext);
LinkList q = NULL;
q = reverse_DG(head->LinkNext);
cout<<endl<<
"反转后的的数值:"<<endl;
printList(q);
cout<<endl<<
"从尾到头打印链表"<<endl;
Print_methid2(q);
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-600279.html