双向链表DuLinkList.h
#include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 typedef char ElemType; typedef int Status; typedef struct DualNode{ ElemType data; struct DualNode *prior; struct DualNode *next; } DualNode, *DuLinkList; Status InitList(DuLinkList *L); void Caesar(DuLinkList *L,int i);
DuLinkList.cpp
#include "DuLinkList.h" int main(){ DuLinkList L; int i,n; printf("输入一个整数:"); scanf("%d",&n); printf("\n"); InitList(&L); Caesar(&L,n); for(i=0;i<26;i++){ L=L->next; printf("%c",L->data); } printf("\n"); system("pause"); return 0; } Status InitList(DuLinkList *L){ DuLinkList p,q; int i; *L=(DuLinkList)malloc(sizeof(DualNode)); if(!(*L))return ERROR; (*L)->next=(*L)->prior=NULL; p=(*L); for(i = 0; i < 26; i++){ q = (DuLinkList)malloc(sizeof(DualNode)); if(!q)return ERROR; p->next=q; q->data='A'+i; q->prior=p; p=q; } (*L)->next->prior=p; p->next=(*L)->next; return OK; } void Caesar(DuLinkList *L,int i){ if(i > 0){ do{ (*L) = (*L)->next; }while(--i); } if(i < 0){ do{ (*L)=(*L)->next; }while(++i); } }