kamia 发表于 2013-5-17 15:46:16

第22讲 线性表17 程序是错的!!!

那道凯撒加密题。老师上课的程序在输入负数值时会出错!

现在贴上正确代码:
#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");
}

yanever 发表于 2013-5-20 14:20:38

牛人。。。激动人心,无法言表!

网侠 发表于 2013-5-21 03:25:50

学习了 好东西

一站幸福 发表于 2013-5-21 12:27:26

真是难得给力的帖子啊。

∑L.X 发表于 2013-12-8 10:57:39

正在学习,看看

Diu 发表于 2013-12-8 11:50:24

难免会有错误

全杨华 发表于 2013-12-18 20:58:56

谢谢楼主分享

猪猪BBUn咕咕 发表于 2013-12-18 21:10:29

牛人啊~~~真的很给力啊
页: [1]
查看完整版本: 第22讲 线性表17 程序是错的!!!