鱼C论坛

 找回密码
 立即注册
查看: 2208|回复: 0

[学习笔记] 对《数据结构与算法》22讲caser函数的部分改写(用while实现)

[复制链接]
发表于 2018-1-14 22:07:58 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>
#include <stdlib.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)->prior=(*L)->next=NULL;
    p=(*L);
    for(i=0;i<26;i++)
    {
        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->next=(*L)->next;
    (*L)->next->prior=p;
    return OK;
}

void caser(Dulinklist*L,int i)
{
    if(i>0)
   {
       i=i+2;
    while(--i)
    {
        (*L)=(*L)->next;
    }
   }
    if(i<0)
    {
        i=i-1;
    (*L)=(*L)->next;
    while(++i)
    {
        (*L)=(*L)->prior;
    }
    }
}
int main()
{
    Dulinklist L;
    int i,n;
    Initlist(&L);
    printf("请输入一个整数:\n");
    scanf("%d",&n);
    caser(&L,n);
    for(i=0;i<26;i++)
    {
        printf("%c ",L->data);
        L=L->next;
    }
    printf("\n");
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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