1.
void DeleteByPos(DoubleLink L,int pos)
{
if(L==NULL||pos<1||pos>L->len)
return;
DoubleLink p=L;
for(int i=0;i<pos;i++)
{
p=p->next;
}
p->prev->next=p->next;
if(p->next!=NULL)
p->next->prev=p->prev;
free(p);
p=NULL;
}
//按位置插入
void InsertByPos(LoopDoubleLink L,int pos,datatype e)
{
if(L==NULL||pos<1||pos>L->len)
return;
LoopDoubleLink p=L;
for(int i=0;i<pos;i++)
{
p=p->next;
}
LoopDoubleLink q=CreatNode();
q->data=e;
p->prev->next=q;
q->prev=p->prev;
q->next=p;
p->prev=q;
L->len++;
}
void Josephe(LoopDoubleLink L,int m,int n)
{
int i,j;
LoopDoubleLink p=L;
for(i=0;i<n;i++)
{
for(j=0;j<m-1;j++)
{
p=p->next;
if(p==L)
j--;
}
LoopDoubleLink q=p->next;
if(q==L)
q=L->next;
printf("%.2f ",q->data);
p->next=q->next;
free(q);
q=NULL;
}
}
//删除所有节点
void DeleteAll(LoopDoubleLink L)
{
while(L->next!=L){
DeleteHead(L);
}
}
//简单选择排序
void SimpleSort(Linklist L)
{
int n=L->len;
Linklist p=L->next;
for(int i=0;i<n-1;i++)
{
Linklist q=p->next;
for(int j=i+1;j<n;j++)
{
if(p->data>q->data)
{
int k=p->data;
p->data=q->data;
q->data=k;
}
q=q->next;
}
p=p->next;
}
}