第六章31题全部代码(powered by spirit_only)

    1 //

    2 //6_31字符分类

    3 //

    4 #include <stdio.h>

    5 #include <stdlib.h>

    6 typedef char datatype;

    7 typedef struct node

    8 {

    9     datatype data;

   10     struct node *next;

   11     struct node *end;

   12 }linklist;

   13 linklist *CreatFromE();                                        //尾插法建立链表

   14 linklist *Compat(linklist *L,datatype i);                    //将数据i粘贴在L的尾部

   15 void Show(linklist *L);                                        //显示链表数据

   16 

   17 void main()

   18 {

   19     linklist *L,*aHead,*bHead,*cHead;

   20     L = CreatFromE();

   21     aHead = NULL;

   22     bHead = NULL;

   23     cHead = NULL;

   24     while(L)

   25     {

   26         if((L->data)>='0'&&(L->data)<='9')

   27         {

   28             aHead = Compat(aHead,L->data);

   29         }

   30         else if((L->data>='a'&&L->data<='z')||(L->data>='A'&&L->data<='Z'))

   31         {

   32             bHead = Compat(bHead,L->data);

   33         }

   34         else

   35         {

   36             cHead = Compat(cHead,L->data);

   37         }

   38         L = L->next;

   39     }

   40     if(aHead != NULL)

   41     {

   42         aHead->end->next = aHead;

   43         Show(aHead);

   44     }

   45     if(bHead != NULL)

   46     {

   47         bHead->end->next = bHead;

   48         Show(bHead);

   49     }

   50     if(cHead != NULL)

   51     {

   52         cHead->end->next = cHead;

   53         Show(cHead);

   54     }

   55 }

   56 linklist *CreatFromE()

   57 {

   58     char ch;

   59     linklist *head,*s,*r;

   60     head = NULL;

   61     r = NULL;

   62     printf("请输入字符:/n");

   63     ch = getchar();

   64     while(ch != '/n')

   65     {

   66         s = (linklist*)malloc(sizeof(linklist));

   67         s->data = ch;

   68         if(head == NULL)

   69             head = s;

   70         else r->next = s;

   71 

   72         r = s;

   73         head->end = r;

   74         ch = getchar();

   75     }

   76     if(r != NULL)

   77         r->next = NULL;

   78     return head;

   79 }

   80 linklist *Compat(linklist *L,datatype i)

   81 {

   82     linklist *s;

   83     s = (linklist *)malloc(sizeof(linklist));

   84     s->data = i;

   85     if(L == NULL)

   86         L = s;

   87     else L->end->next = s;

   88     L->end = s;

   89 

   90     return L;

   91 }

   92 void Show(linklist *L)

   93 {

   94     linklist *temp;

   95     temp = L;

   96     while(temp->next != L)

   97     {

   98         printf("%c/t",temp->data);

   99         temp = temp->next;

  100     }

  101     printf("/n");

  102 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值