list


#include <iostream.h>

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

Node* Create(int *Arr, int n)
{
 if (n <= 0)
 {
  return NULL;
 }
 Node* head;    //Á´Ê×Ö¸Õë
 Node* pS;        //´´½¨µÄ½áµãÖ¸Õë
 Node* pEnd;      //Á´Î²Ö¸Õ룬ÓÃÓÚÔÚÆäºóÃæ²åÈë½áµã
 pS=new Node;     //н¨Ò»¸ö½áµã£¬×¼±¸²åÈëÁ´±í
 pS->data = Arr[0];    //¸ø½áµã¸³Öµ
 head=NULL;          //Ò»¿ªÊ¼Á´±íΪ¿Õ
 pEnd=pS;
 int cur = 1;
 while(cur <= n)
 {
  if(head==NULL)
   head=pS;
  else
   pEnd->next=pS;
  
  pEnd=pS;        //sµã
  pS=new Node;
  pS->data = Arr[cur];
  cur++;
 }
 pEnd->next=NULL;
 
 return(head);
}

void ShowList(Node* head)
{
 cout <<"now the items of list are /n";
 
 while(head)
 {
  cout << head->data << " ";
  head=head->next;
 }
 cout << endl;
}

Node * ReverseList(Node *head) //Á´±íÄæÐò
{
 if ( head == NULL || head->next == NULL )
  return head;
 Node *p1 = head ;
 Node *p2 = p1->next ;
 Node *p3 = p2->next ;
 p1->next = NULL ;
 while ( p3 != NULL )
 {
  p2->next = p1 ;
  p1 = p2 ;
  p2 = p3 ;
  p3 = p3->next ;
 }
 p2->next = p1 ;
 head = p2 ;
 return head ;
}

Node* insert(Node *head, int i, int data)
{
 Node *pHead = head;
 int j=0;
 
 Node *ins = new Node;
 ins->data = data;
 ins->next = NULL;

 if (head == NULL)
 {
  head = ins;
  return head;
 }
 while(pHead != NULL && j<i-1)
 {
  pHead = pHead->next;
  j++;
 }

 ins->next = pHead->next;
 pHead->next = ins;

 return head;
}

Node* del(Node *head, int i)
{
 Node *pHead = head;
 Node *del = NULL;;
 int j=0;
 
 if (head == NULL)
 {
  return NULL;
 }

 while(pHead->next != NULL && j<i-1)
 {
  pHead = pHead->next;
  j++;
 }

 del = pHead->next;
 pHead->next = del->next;
 delete del;

 return head;
}

Node* selectsort(Node *g)
{
 Node *p,*q,*t,*s,*h;
 h = new Node;
 h->next=g;
 p=h;
 while(p->next->next!=NULL)
 {
  for(s=p,q=p->next;q->next!=NULL;q=q->next)
   if(q->next->data<s->next->data)
    s=q;
   if(s!=q)
   {
    t=s->next;
    s->next=t->next;
    t->next=p->next;
    p->next=t;
   }
   p=p->next;
 }
 g=h->next;
 delete h;
 return g;
}

void main()
{
 int Arr[10] = {1, 4, 3};
 Node *head = Create(Arr, 3);
 ShowList(insert(head, 2, 11));
 Node *reverhead = ReverseList(head);
 ShowList(reverhead);
 ShowList(insert(reverhead, 2, 10));
 ShowList(del(reverhead, 2));
 ShowList(selectsort(reverhead));
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值