list

原创 2007年10月10日 21:08:00


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

收藏助手
不良信息举报
您举报文章:list
举报原因:
原因补充:

(最多只允许输入30个字)