|
发表于 2023-12-23 09:24:08
|
显示全部楼层
本楼为最佳答案
 - #include <stdlib.h>
- #include <stdio.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)
- {
- DualNode *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;
- }
- q->data='A'+i;
- q->prior=p;
- q->next=p->next;
- p->next=q;
-
- p=q;
- }
- p->next = (*L)->next;
- (*L)->prior = p;
-
- return OK;
- }
- void Caesar(DuLinkList *L,int i)
- {
- if(i>0)
- {
- do {
- (*L)=(*L)->next;
- } while (--i);
- }
- else if(i<0)
- {
- i=-i+1;
- do {
- (*L)=(*L)->prior;
- } while (--i);
- }
- }
- void PrintCeasar(DuLinkList L)
- {
- int i;
- DuLinkList temp = L; // 保存链表头部指针
- for (i = 0; i < 26; i++)
- {
- temp = temp->next;
- printf("%c", temp->data);
- }
- printf("\n");
- }
- int main(void)
- {
- DuLinkList L;
- int n;
-
- InitList(&L);
- printf("请输入一个整数:");
- scanf("%d",&n);
- printf("\n");
- Caesar(&L, n);
- PrintCeasar(L);
-
- return 0;
- }
复制代码
- 请输入一个整数:-1
- ZABCDEFGHIJKLMNOPQRSTUVWXY
复制代码 |
|