#include<iostream>
#include<cstdio>
#include<cstdlib>
int key=1;
int cmp(const void* a,const void* b)
{
return *(int*)a-*(int*)b;
}
typedef struct Node
{
int data;
struct Node *next;
} Listnode;
Listnode* createhand(int* a)
{
int i=0;
Listnode *L,*s;
L=(Listnode*)malloc(sizeof(Listnode));
L->next=NULL;
while(a[i]!=1000000)
{
s=(Listnode*)malloc(sizeof(Listnode));
s->data=a[i];
s->next=L->next;
L->next=s;
i++;
}
return L;
}
Listnode* createtail(int* a)
{
Listnode *L,*s,*r;
int i=0;
L=(Listnode*)malloc(sizeof(Listnode));
r=L;
while(a[i]!=1000000)
{
s=(Listnode*)malloc(sizeof(Listnode));
s->data=a[i];
r->next=s;
r=s;
i++;
}
r->next=NULL;
return L;
}
Listnode* createAstyle(int* a,int n)
{
Listnode *L,*s,*r;
int i=0;
qsort(a,n,sizeof(a[0]),cmp);
L=(Listnode*)malloc(sizeof(Listnode));
r=L;
while(a[i]!=1000000)
{
s=(Listnode*)malloc(sizeof(Listnode));
s->data=a[i];
r->next=s;
r=s;
i++;
}
r->next=NULL;
return L;
}
int findingrank(Listnode* L,int rank)
{
Listnode *p;
p=L->next;
int i=0;
while(i<rank-1&&p)
{
p=p->next;
i++;
}
if(!p)
{
printf("YOU CAN FIND NOTHING!!!\n");
return 373575327;
}
return p->data;
}
int findingdata(Listnode* L,int data0)
{
Listnode *p;
int i=0;
p=L->next;
while(p)
{
if(p->data==data0)
break;
i++;
p=p->next;
}
if(!p)
{
printf("YOU CAN FIND NO LOCATION!!!\n");
return 373575327;
}
else
printf("是第%d个元素\n",i+1);
return 0;
}
void outputnode(Listnode* L)
{
Listnode *p,*tmp;
p=L->next;
while(p)
{
printf("%d ",p->data);
tmp=p->next;
if(key) free(p);
p=tmp;
}
printf("\n");
}
int deleterank(Listnode* L,int rank)
{
Listnode *p,*q;
int i=0;
p=L;
while(i<rank-1&&p)
{
i++;
p=p->next;
}
if(!p) return 0;
else
{
q=p->next;
p->next=q->next;
free(q);
}
key=0;
outputnode(L);
return 0;
}
int deletedata(Listnode* L,int data0)
{
Listnode *p,*q;
p=L;
while(p->next->data!=data0)
p=p->next;
q=p->next;
p->next=q->next;
free(q);
key=0;
outputnode(L);
return 0;
}
Listnode* addtonew(Listnode* A,Listnode* B)
{
Listnode *C,*s,*r,*p,*q;
C=(Listnode*)malloc(sizeof(Listnode));
r=C;
p=A;
q=B;
p=p->next;
while(p)
{
s=(Listnode*)malloc(sizeof(Listnode));
s->data=p->data;
r->next=s;
r=s;
p=p->next;
}
q=q->next;
while(q)
{
s=(Listnode*)malloc(sizeof(Listnode));
s->data=q->data;
r->next=s;
r=s;
q=q->next;
}
r->next=NULL;
key=0;
outputnode(C);
return C;
}
Listnode* addtoold(Listnode*A,Listnode*B)
{
Listnode *r,*tmp,*q,*s;
tmp=A;
q=B;
while(tmp->next) tmp=tmp->next;
r=tmp;
q=q->next;
while(q)
{
s=(Listnode*)malloc(sizeof(Listnode));
s->data=q->data;
r->next=s;
r=s;
q=q->next;
}
r->next=NULL;
key=0;
outputnode(A);
return A;
}
int main()
{
int a[6]= {1,2,10,4,5,1000000};//1000000用于大数标记
int b[6]= {7,90,23,75,2,1000000};
int keep;
Listnode *A,*B,*C;
A=createAstyle(a,6);
B=createAstyle(b,6);
C=addtoold(A,B);
key=1;
outputnode(C);
return 0;
}