| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 676 人关注过本帖
标题:[求助]为什么输入的时候输了一个就闪没有了呢
只看楼主 加入收藏
gaga
Rank: 1
等 级:新手上路
威 望:2
帖 子:307
专家分:0
注 册:2006-4-5
收藏
 问题点数:0 回复次数:9 
[求助]为什么输入的时候输了一个就闪没有了呢

/*输入两个字符串,把含有两个字符串的最小长度的字符串输出.如abc,cde,则输出abcde*/
#include<stdio.h>
#include<malloc.h>

#define NULL 0

typedef struct LNode
{
char s;
struct LNode *next;
}Node,*LinkList;

*creat(int n) /*创建表的函数*/
{
LinkList L,p;
int i;
L=(Node*)malloc(sizeof (Node));
L->next=NULL;
for(i=n;i>0;--i)
{p=(Node*)malloc(sizeof (Node));
scanf("%c",p->s);
L->next=p;
p->next=L->next;
}

return L;
}

void print(LinkList L)
{
while(L)
{
printf("%c",L->s);
L=L->next;
}
}


/*连接两个字符串,将b中与a不同的连到a的最后*/
*merge(LinkList ha,LinkList hb,LinkList t)
{ LinkList p;
for(hb=hb->next;hb!=Null;hb=hb->next)
{ for(p=ha->next;p!=t->next;p=p->next)
if(ha->s != hb->s)
{t->next=hb;
t=t->next;
break;
}
};
t->next=Null;
return ha->next;
}

main()
{ int x,y;
LinkList hA,hB,hc,ta;
printf("InPut A NO:\n");/*Input a串数*/
scanf("%d",&x);
printf("Input a串:\n");/*Input a串*/
hA=*creat(x);
for(;hA->next !=NULL;hA=hA->next)
ta=hA; /*找到a 串的末字符的尾指针*/
hA=*creat(x);
printf("InPut B NO:\n"); /*Input b串数*/
scanf("%d",&y);
printf("Input b串:\n"); /*Input b串*/
hB=*creat(y);
hc=*merge( hA, hB, ta);
print(hc);
getch();

}
/*出现的问题是当输入字符串b时一输就闪没有了*/

[此贴子已经被作者于2006-4-17 15:25:22编辑过]

搜索更多相关主题的帖子: 输入 
2006-04-16 12:36
gaga
Rank: 1
等 级:新手上路
威 望:2
帖 子:307
专家分:0
注 册:2006-4-5
收藏
得分:0 
为什么没有人回我的帖子呢
没有人回
我先顶

明天的明天还有明天。 可是今天却只有一个。 public Copy from 无缘今生
2006-04-16 21:49
风之语录
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2006-3-15
收藏
得分:0 
垃圾 

2006-04-16 23:35
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-04-17 00:16
风之语录
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2006-3-15
收藏
得分:0 

#include<stdio.h>
#include<malloc.h>

#define Null 0

typedef struct LNode
{
char s;
struct LNode *next;
}LNode,*LinkList;

LinkList creat(int n) /*创建表的函数*/
{
LinkList L,p;
int i;
L=(LinkList)malloc(sizeof(LNode));
L->next=Null;
for(i=n;i>0;i--)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%c",p->s);
L->next=p;
p->next=L->next;
}
return L;
}

void print(LinkList &L)
{
while(L)
{
printf("%c ",L->s);
L=L->next;
}
}


/*连接两个字符串,将b中与a不同的连到a的最后*/
LinkList merge(LinkList &ha,LinkList &hb,LinkList &t)
{
LinkList p,q;
p=ha->next;
q=ha->next;
while(p)
{
while(q)
{
if(q->s==p->s)
{
t->next=q;
t=t->next;
q=q->next;
}
else q=q->next;
}
p=p->next;
}
return ha;
}

void main()
{
int x,y;
LinkList hA,hB,hc,ta,p;

printf("InPut A NO:\n");/*Input a串数*/
scanf("%d",&x);
printf("Input a串:\n");/*Input a串*/
hA=creat(x);
print(hA);

p=hA->next;
while(p)p=p->next;
ta=hA; /*找到a 串的末字符的尾指针*/

printf("InPut B NO:\n"); /*Input b串数*/
scanf("%d",&y);
printf("Input b串:\n"); /*Input b串*/
hB=creat(y);
print(hB);

hc=merge( hA, hB, ta);
print(hc);
getchar();

}
不过有一个问题:416a.exe - 0 error(s), 0 warning(s)不知怎么改


2006-04-17 14:38
gaga
Rank: 1
等 级:新手上路
威 望:2
帖 子:307
专家分:0
注 册:2006-4-5
收藏
得分:0 

还是不行


明天的明天还有明天。 可是今天却只有一个。 public Copy from 无缘今生
2006-04-17 15:00
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
楼主
我没有仔细看你的程序,你先按下面方法试试。
在main()的结尾再加个getchar();即

main()
{ int x,y;
LinkList hA,hB,hc,ta;
printf("InPut A NO:\n");/*Input a串数*/
scanf("%d",&x);
printf("Input a串:\n");/*Input a串*/
hA=*creat(x);
for(;hA->next !=NULL;hA=hA->next)
ta=hA; /*找到a 串的末字符的尾指针*/
hA=*creat(x);
printf("InPut B NO:\n"); /*Input b串数*/
scanf("%d",&y);
printf("Input b串:\n"); /*Input b串*/
hB=*creat(y);
hc=*merge( hA, hB, ta);
print(hc);
getchar();
getchar();

}
如果还是一闪就没,那就说明你的程序本身有问题

[此贴子已经被作者于2006-4-18 14:40:15编辑过]


我的征途是星辰大海
2006-04-18 13:06
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 

仔细看了一下,的确是漏洞百出

[此贴子已经被作者于2006-4-25 11:00:22编辑过]


我的征途是星辰大海
2006-04-18 13:13
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 

*creat(int n) /*创建表的函数*/
{
LinkList L,p;
int i;
L=(Node*)malloc(sizeof (Node));
L->next=NULL;
for(i=n;i>0;--i)
{p=(Node*)malloc(sizeof (Node));
scanf("%c",p->s);
L->next=p;//注意,这句是在循环中!而函数中L的地址始终没变!这句使第2个结点不断变化而没有形成链表!其余结点变成单个独立结点,恐怕无法连接或是释放内存空间了(重启电老到是可以释放空间)
p->next=L->next;//现在的L->next指向的是 p 的地址,那p->next=L->next不就成了p->next=p ?
}

return L;//这里的L应该是头结点的地址
}
//PS:这个函数生成的链表是单链表,这个程序最好用双链表


我的征途是星辰大海
2006-04-18 13:33
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
楼主最好重新编一次,一步一步的调试。

我的征途是星辰大海
2006-04-18 14:02
快速回复:[求助]为什么输入的时候输了一个就闪没有了呢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026462 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved