#include <iostream>
#include <string>
#include <iomanip>
#include <ctime>
#include <cstdlib>ios
using namespace std;spa
struct Node{
int data;
struct Node *next;
};code
Node * Create(){
struct Node *head = new Node;
struct Node *p;
head->next = NULL;
p = head;排序
srand(unsigned(time(NULL)));
for(int i= 0; i<10; i++){
struct Node *q = new Node ;
q->data = rand() % 100;
q->next = p->next;
p->next = q;
p = q;
}
p->next = NULL;ip
return head;
}string
void LH(Node *head){ //逆置
Node *p, *q, *r;
p = head->next;
q = p->next;
p->next = NULL;
while( NULL != q ){
r = q;
q = q->next;
r->next = head->next;
head->next = r;
}
}io
void Disp( Node *head){
if( NULL == head ){
cout<<"enpty "<<endl;
return ;
}
Node *p = head->next;
while( NULL != p ){
cout<<setw(4)<<p->data;
p = p->next ;
}
cout<<endl;
}class
void sort( Node *head ){ // 就地排序
Node *p, *q, *r, *k;
int i = 0;
p = head->next;
q = p->next;
p->next = NULL;stream
while( NULL != q ){
r = q;
q = q->next;
if( r->data < head->next->data ){
r->next = head->next;
head->next = r;
}
else {
k = head->next;
for(i=0; NULL != k->next && r->data > k->next->data; i++){
k = k->next;
}
r->next = k->next;
k->next = r;
}
}
}im
void delete_Link( Node *head ){
if(NULL == head)
{
return;
}
if(NULL == head->next)
{
delete head;
head = NULL;
return;
}
Node *p = head->next;
Node *r;
while(NULL != p)
{
r = p;
p = p->next;
delete r;
}
delete head;
head = NULL;
}
int main(){
Node *head = Create();
Disp( head );
LH( head );
cout<<"\n 逆置後:"<<endl;
Disp( head );
sort( head );
cout<<"\n 排序後:"<<endl;
Disp( head );
delete_Link( head );
return 0; }