SWUST OJ(960)

时间:2023-03-08 22:46:32

双向链表的操作问题

 /*双向链表的操作问题*/
#include <stdio.h>
#include <stdlib.h> typedef struct DLNode
{
int data;
struct DLNode *prior,*next;
}DLinkList; void InitList(DLinkList *&L)
{
L =(DLinkList*)malloc(sizeof(DLinkList));
L->prior = L;
L->next = L;
} void CreateList(DLinkList *&L, int n)
{
DLinkList * p,*r;
r = L;
for (int i = ; i < n; ++i)
{
p =(DLinkList*)malloc(sizeof(DLinkList));
scanf("%d",&p->data);
p->next = r->next;
r->next->prior = p;
r->next = p;
p->prior = r;
L->prior = p;
r = p;
}
} void Dis(DLinkList *L)
{
DLinkList *r;
r = L;
while(r->next!=L)
{
r = r->next;
printf("%d ",r->data);
}
} void sor(DLinkList *&L)
{
DLinkList *f,*s;
int tem;
f = L->next;
s = f->next;
while(f!=L)
{
while(s!=L)
{
if (f->data > s->data)
{
tem = f->data;
f->data = s->data;
s->data = tem;
}
s = s->next;
} f = f->next;
s = f->next;
}
} int main(int argc, char const *argv[])
{
DLinkList * L;
int n;
scanf("%d",&n);
InitList(L);
CreateList(L,n);
sor(L);
Dis(L);
return ;
}

注:代码中的排序方法为冒泡排序