一个单链表

单链表的创建,本地逆序,本地排序,输出,销毁



#include <iostream>
#include <string>
#include <iomanip>
#include <ctime>
#include <cstdlib>

using namespace std;

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

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;

 return head;
}

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;
 }
}

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;
}

void sort( Node *head ){   // 就地排序
 Node *p, *q, *r, *k;
 int i = 0;
 p = head->next;
 q = p->next;
 p->next = NULL;

 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;
  }
  
 }
}

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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值