|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
想用单链表实现字符串的分段存储,但是以下代码无法打印输出下一结点中的字符,不知道是创建还是输出有问题(还是都有问题)求鱼油们解惑,小弟不胜感激
<
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define len 10
#define Newfd (fd*)malloc(sizeof(fd));//创造新结点
typedef struct k
{
char s[len];
struct k *next;
}fd;
fd* creatfdlink()
{
bool flag=true;
fd *h,*tail,*p;//p用于创建新节点
h=Newfd;
h->next=NULL;
tail=h;//用于尾插法指向最后一个节点
int i;//字符数组下标
char x=0;//用于读取字符
printf("请输入字符串(以回车键结束):");
scanf("%c",&x);
while(flag)
{
for(i=0;i<len && x!='\n';i++)
{
tail->s[i]=x;
scanf("%c",&x);
}
if(i>=len)
{
p=Newfd;
p->next=NULL;
tail->next=p;
tail=p;
}
else
tail->s[i]='\0';
break;
}
return h;
}
void printfdlink(fd *h)
{
bool flag=true;
fd *p;//用p遍历节点
p=h;
int i;//字符数组下标
printf("字符串的内容是:");
while(flag)
{
for(i=0;p->s[i]!='\0' && i<len;i++)
{
printf("%c",p->s[i]);
}
if(i>=len && p->next!=NULL)
{
p=p->next;
}
else
break;
}
}
int main()
{
fd *h;
h=creatfdlink();
printfdlink(h);
return 0;
}>
本帖最后由 superbe 于 2019-10-22 18:32 编辑
fd* creatfdlink()
{
......
else
{
tail->s[ i ]='\0';
break;
}
}
return h;
}
|
|