1、包含的头文件
#include<stdio.h>
#include<math.h>
#include <stdlib.h>
2、重定义类型
typedef char ElemType;
typedef int Status;
#define Ture 1
#define Error 0
3、元素结构体定义
typedef struct DualNode
{
ElemType data;
struct DualNode *prior;
struct DualNode *Next;
} DualNode,*DuLinklist;
4、操作函数
链表创建
Status CreateLink(DuLinklist *L,int n)
{
int i=0;
DuLinklist p,q;
(*L) = (DuLinklist)malloc(sizeof(DualNode));
if(!(*L))
{
return Error;
}
(*L)->prior = NULL;
(*L)->Next = NULL;
p = (*L);
for(;i<n;i++)
{
q = (DuLinklist)malloc(sizeof(DualNode));
if(!q)
{
return Error;
}
q->data = 'A'+i;
q->prior = p;
q->Next = NULL;
p->Next = q;
p = q;
}
p->Next = (*L)->Next;
(*L)->Next->prior = p;
(*L)->prior = p;
return Ture;
}
字母排序
void Sort(DuLinklist *L,int i)
{
if(i>0)
{
do
{
(*L) = (*L)->Next;
} while (--i);
}
else if(i<0)
{
do
{
(*L) = (*L)->prior;
} while (++i);
}
}
主函数
void main()
{
int i;
DuLinklist L;
CreateLink(&L,26);
for(i=0;i<26;i++)
{
L=L->Next;
printf("%c ",L->data);
}
printf("\n");
printf("请输入排序数:");
scanf("%d",&i);
Sort(&L,i);
printf("\n");
for(i=0;i<26;i++)
{
L=L->Next;
printf("%c ",L->data);
}
}
测试结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0fedee3a893a9dd7fa4c15351c41277a.png)