|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
小甲鱼 数据结构与算法 第22讲 的 一个程序
输入一个数 例如 3
则输出为 DEFGHIJKLMNOPQRSTUVWXYZABC
-3
则输出为 XYZABCDEFGHIJKLMNOPQRSTUVW
我的程序写出来输入正数 能得正确结果, 输入负数 程序崩溃 求解{:1_1:}
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define OK 1
#define ERROR 0
typedef int Status;
typedef char ElemType;
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)->next->prior = p;
}
void Caesar ( DuLinkList *L , int i )
{
if ( i > 0 )
{
do
{
(*L) = (*L)->next ;
}while ( --i );
}
if ( i < 0 )
{
do
{
(*L) = (*L)->prior;
}while ( ++i );
}
}
int main()
{
DuLinkList L;
int i ;
int n ;
InitList(&L);
printf("请输入一个整数:");
scanf("%d", &n);
printf("\n");
Caesar(&L,n);
for ( i = 0 ; i < 26 ; i++ )
{
L = L->next ;
printf("%c" , L->data);
}
return 0;
}
|
|