啊啊啊,头疼死了。。。求大神有空看一下有什么错误
等待指正的程序:
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct list{
char date;
struct list *next;
}list;
list *build()//*构建无头结点的字符串*//
{
char q=getchar();
list *l,*s,*p;
l=(list *)malloc(sizeof(list));
l->next=NULL;
p=l;
while(q!='$'){
s=(list *)malloc(sizeof(list));
s->date=q;
p->next=s;
p=s;
q=getchar();
}//*字符链输入以$结束*//
p->next=NULL;
p=l->next;
free(l);
return p;
}//build
void sort(list *l,list *a,list *b,list *c)
{
list *d,*e,*f;
d=a,e=b,f=c;
while(!l){
if(l->date>=48&&l->date<=57){
a->next=l;
a=a->next;
l=l->next;
}//*数据是0到9字符的链放到a链中*//
else if((l->date<=90&&l->date>=65)||(l->date>=97&&l->date<=122)){
b->next=l;
b=b->next;
l=l->next;
}//*数据是字母的链放到b链中*//
else {
c->next=l;
c=c->next;
l=l->next;
} //*数据是其他字符的链放到c链中*//
}
a->next=d;
b->next=e;
c->next=f;//*构成循环链表*//
}//sort
void print(list *x){
list *y;
y=x;
while(x->next!=y){
printf("%c ",x->next->date);//*输出单循环链 *//
x=x->next;
}
printf("\n");
int main()
{
list *l,*a,*b,*c;
a=(list *)malloc(sizeof(list));
b=(list *)malloc(sizeof(list));
c=(list *)malloc(sizeof(list));//*构建三个头结点*//
l=build();
sort(l,a,b,c);
print(a);
print(b);
print(c);
return 0;
}
8 个解决方案
#1
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct list{
char date;
struct list *next;
}list;
list *build()//*构建无头结点的字符串*//
{
char q=getchar();
list *l,*s,*p;
l=(list *)malloc(sizeof(list));
l->next=NULL;
p=l;
while(q!='$'){
s=(list *)malloc(sizeof(list));
s->date=q;
p->next=s;
p=s;
q=getchar();
}//*字符链输入以$结束*//
p->next=NULL;
p=l->next;
free(l);
return p;
}//build
void sort(list *l,list *a,list *b,list *c)
{
list *d,*e,*f;
d=a,e=b,f=c;
while(l){
if(l->date>=48&&l->date<=57){
a->next=l;
a=a->next;
l=l->next;
}//*数据是0到9字符的链放到a链中*//
else if((l->date<=90&&l->date>=65)||(l->date>=97&&l->date<=122)){
b->next=l;
b=b->next;
l=l->next;
}//*数据是字母的链放到b链中*//
else {
c->next=l;
c=c->next;
l=l->next;
} //*数据是其他字符的链放到c链中*//
}
a->next=d;
b->next=e;
c->next=f;//*构成循环链表*//
}//sort
void print(list *x){
list *y;
y=x;
while(x->next!=y){
printf("%c ",x->next->date);//*输出单循环链 *//
x=x->next;
}
printf("\n");
int main()
{
list *l,*a,*b,*c;
a=(list *)malloc(sizeof(list));
b=(list *)malloc(sizeof(list));
c=(list *)malloc(sizeof(list));//*构建三个头结点*//
l=build();
sort(l,a,b,c);
print(a);
print(b);
print(c);
return 0;
}
你没下断点调试一下么 .....
惩罚你一下 你猜我改哪里了....
#2
注意结贴~~~~
#3
#4
还是没输出啊= =怎么回事。。。。
#5
额 你输入什么了.... 亲
#6
字符串啊= =
#7
额 如果你没输入$那就真是根本停不下来了~~~~~
这是我程序运行的结果 因为你的源程序要求$作为停止符
这是我程序运行的结果 因为你的源程序要求$作为停止符
#8
当时我没发现while里面的! 改了= =
#1
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct list{
char date;
struct list *next;
}list;
list *build()//*构建无头结点的字符串*//
{
char q=getchar();
list *l,*s,*p;
l=(list *)malloc(sizeof(list));
l->next=NULL;
p=l;
while(q!='$'){
s=(list *)malloc(sizeof(list));
s->date=q;
p->next=s;
p=s;
q=getchar();
}//*字符链输入以$结束*//
p->next=NULL;
p=l->next;
free(l);
return p;
}//build
void sort(list *l,list *a,list *b,list *c)
{
list *d,*e,*f;
d=a,e=b,f=c;
while(l){
if(l->date>=48&&l->date<=57){
a->next=l;
a=a->next;
l=l->next;
}//*数据是0到9字符的链放到a链中*//
else if((l->date<=90&&l->date>=65)||(l->date>=97&&l->date<=122)){
b->next=l;
b=b->next;
l=l->next;
}//*数据是字母的链放到b链中*//
else {
c->next=l;
c=c->next;
l=l->next;
} //*数据是其他字符的链放到c链中*//
}
a->next=d;
b->next=e;
c->next=f;//*构成循环链表*//
}//sort
void print(list *x){
list *y;
y=x;
while(x->next!=y){
printf("%c ",x->next->date);//*输出单循环链 *//
x=x->next;
}
printf("\n");
int main()
{
list *l,*a,*b,*c;
a=(list *)malloc(sizeof(list));
b=(list *)malloc(sizeof(list));
c=(list *)malloc(sizeof(list));//*构建三个头结点*//
l=build();
sort(l,a,b,c);
print(a);
print(b);
print(c);
return 0;
}
你没下断点调试一下么 .....
惩罚你一下 你猜我改哪里了....
#2
注意结贴~~~~
#3
#4
还是没输出啊= =怎么回事。。。。
#5
额 你输入什么了.... 亲
#6
字符串啊= =
#7
额 如果你没输入$那就真是根本停不下来了~~~~~
这是我程序运行的结果 因为你的源程序要求$作为停止符
这是我程序运行的结果 因为你的源程序要求$作为停止符
#8
当时我没发现while里面的! 改了= =