注册 登录
编程论坛 数据结构与算法

请教高手,指出错误,感谢啦

迢迢菜 发布于 2014-03-12 22:10, 553 次点击
#include"stdio.h"
#include"malloc.h"
int main()
{  typedef struct node{
    char data;
    struct node*next;
    }LinkList;
   LinkList *head,*s,*r,*letter,*digital,*other,*q,*p1,*p2,*p3;
   char ch;
   head=(LinkList*)malloc(sizeof(LinkList));
   digital=(LinkList*)malloc(sizeof(LinkList));
   letter=(LinkList*)malloc(sizeof(LinkList));
   other=(LinkList*)malloc(sizeof(LinkList));
   r=head;
   while (ch!='$'){
     s=(LinkList *)malloc(sizeof(LinkList));//创建结点放入字符
     s->data=ch;
     r->next=s;    //
     r=s;        //
     ch=getchar();
   }
   r->next=NULL;
   q=head->next;
   p1=digital;
   p2=letter;
   p3=other;
    do{if((q->data>='0')&&(q->data<='9'))//选出数字字符
        {   head->next=q->next;
            p1->next=q;
            p1=p1->next;
            q=head->next;
        }
        else if(((q->data>='a')&&(q->data<='z'))||((q->data>='A')&&(q->data<='Z')))//选出字母字符
           {
            head->next=q->next;
            p2->next=q;
            p2=p2->next;
            q=head->next;
            }
            else {
              head->next=q->next;
              p3->next=q;
              p3=p3->next;
              q=head->next;
              }
          }while(q!=NULL);
   while(digital!=NULL){    //分别输出三个链表
    printf("%C ",digital->data);
    digital=digital->next;}
    printf("\n");
   while(letter!=NULL){
    printf("%C ",letter->data);
    letter=letter->next;}
    printf("\n");
   while(other!=NULL){
    printf("%C ",other->data);
    other=other->next;}
    printf("\n");

}
4 回复
#2
azzbcc2014-03-13 05:31
你的 三個鏈錶 都沒有 NULL,加到 輸出前面

p1->next = NULL;...
#3
迢迢菜2014-03-13 12:59
回复 2楼 azzbcc
谢谢你了,不过我还想问一下,运行出来后三个链表开头都有x
#4
azzbcc2014-03-13 17:34
因為你的鏈錶都帶 頭結點,你有沒有跳過頭結點
#5
迢迢菜2014-03-15 22:05
回复 4楼 azzbcc
thank you
1