|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
那道凯撒加密题。老师上课的程序在输入负数值时会出错!
现在贴上正确代码:
- #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;
- Status initList(DualNode** L){
- DualNode* p, *q;
- int i;
- *L = (DualNode*)malloc(sizeof(DualNode));
- if(!(*L)){
- return ERROR;
- }
- (*L)->next = (*L)->prior = NULL;
- p = *L;
- for(i=0; i<26; i++){
- // q指向新建立的节点
- q = (DualNode*)malloc(sizeof(DualNode));
- if( !q ){
- return ERROR;
- }
- q->data = 'A' + i;
- q->prior = p;
- q->next = p->next;
- p->next = q;
- // p指向q前一个节点
- p = q;
- }
- p->next = (*L)->next;
- (*L)->next->prior = p;
- return OK;
- }
- void casar(DualNode** L, int i){
- if(i > 0){
- do{
- (*L) = (*L)->next;
- }while(--i);
- }
- if(i < 0){
- DualNode* p = (*L)->next;
- for(i; i<0; i++){
- //printf("p is %c\n", p->data);
- (p) = (p)->prior;
- }
- (*L) = p->prior;
- }
- }
- int main(){
- DualNode* L;
- int i, n;
- initList(&L);
- printf("Input an integer:\n");
- scanf("%d", &n);
- casar(&L, n);
- if(L == NULL){
- printf("L is NULL\n");
- }
- else{
- //printf("%c\n", L->data);
- }
- for(i=0; i<26; i++){
- L = L->next;
- printf("%c", L->data);
- }
- printf("\n");
- }
复制代码
|
|