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