鱼C论坛

 找回密码
 立即注册
查看: 3656|回复: 7

[争议讨论] 第22讲 线性表17 程序是错的!!!

[复制链接]
发表于 2013-5-17 15:46:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

现在贴上正确代码:
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. #define OK 1
  4. #define ERROR 0

  5. typedef char ElemType;
  6. typedef int Status;


  7. typedef struct DualNode
  8. {
  9.         ElemType data;
  10.         struct DualNode* prior;
  11.         struct DualNode* next;
  12. }DualNode;


  13. Status initList(DualNode** L){

  14.         DualNode* p, *q;
  15.         int i;

  16.         *L = (DualNode*)malloc(sizeof(DualNode));
  17.         if(!(*L)){
  18.                 return ERROR;
  19.         }

  20.         (*L)->next = (*L)->prior = NULL;
  21.         p = *L;

  22.         for(i=0; i<26; i++){

  23.                 // q指向新建立的节点
  24.                 q = (DualNode*)malloc(sizeof(DualNode));
  25.                 if( !q ){
  26.                         return ERROR;
  27.                 }

  28.                 q->data = 'A' + i;
  29.                 q->prior = p;
  30.                 q->next = p->next;
  31.                 p->next = q;

  32.                 // p指向q前一个节点
  33.                 p = q;
  34.         }

  35.         p->next = (*L)->next;
  36.         (*L)->next->prior = p;
  37.         return OK;
  38. }

  39. void casar(DualNode** L, int i){

  40.         if(i > 0){
  41.                 do{
  42.                         (*L) = (*L)->next;
  43.                 }while(--i);
  44.         }

  45.         if(i < 0){
  46.                 DualNode* p = (*L)->next;
  47.                 for(i; i<0; i++){
  48.                         //printf("p is %c\n", p->data);
  49.                         (p) = (p)->prior;
  50.                 }
  51.                 (*L) = p->prior;
  52.         }
  53. }


  54. int main(){

  55.         DualNode* L;
  56.         int i, n;

  57.         initList(&L);
  58.         printf("Input an integer:\n");
  59.         scanf("%d", &n);
  60.         casar(&L, n);

  61.         if(L == NULL){
  62.                 printf("L is NULL\n");
  63.         }
  64.         else{
  65.                 //printf("%c\n", L->data);
  66.         }


  67.         for(i=0; i<26; i++){
  68.                 L = L->next;
  69.                 printf("%c", L->data);
  70.         }
  71.         printf("\n");
  72. }
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-20 14:20:38 | 显示全部楼层
牛人。。。激动人心,无法言表!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-5-21 03:25:50 | 显示全部楼层
学习了 好东西
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-5-21 12:27:26 | 显示全部楼层
真是难得给力的帖子啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-8 10:57:39 | 显示全部楼层
正在学习,看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-8 11:50:24 | 显示全部楼层
难免会有错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-18 20:58:56 | 显示全部楼层
谢谢楼主分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-18 21:10:29 | 显示全部楼层
牛人啊~~~真的很给力啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 18:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表