数据结构串的链式存储赋值问题!
#include"stdio.h"#include"stdlib.h"typedefstructNode{charch;structNode*next;}Cstring,...
#include"stdio.h"
#include"stdlib.h"
typedef struct Node
{
char ch;
struct Node * next;
}Cstring,*Pstring;
void initstr(Pstring s)//初始化
{
s=(Pstring)malloc(sizeof(Cstring));
s->next=NULL;
}
void strval(Pstring s,char ch[])//赋值
{
int i=1;
if(s->next!=NULL)
s->next=NULL;
s->ch=ch[0];
Pstring s2;
s2=s;
for(i=1;ch[i]!='\0';i++)
{
Pstring s1;
initstr(s1);();//执行到这里就内存不能读!!
s1->ch=ch[i];
s2->next=s1;
s2=s1;
}
}
void main()
{
Cstring L;
char ch[4]="abc";
initstr(&L);
strval(&L,ch);
} 展开
#include"stdlib.h"
typedef struct Node
{
char ch;
struct Node * next;
}Cstring,*Pstring;
void initstr(Pstring s)//初始化
{
s=(Pstring)malloc(sizeof(Cstring));
s->next=NULL;
}
void strval(Pstring s,char ch[])//赋值
{
int i=1;
if(s->next!=NULL)
s->next=NULL;
s->ch=ch[0];
Pstring s2;
s2=s;
for(i=1;ch[i]!='\0';i++)
{
Pstring s1;
initstr(s1);();//执行到这里就内存不能读!!
s1->ch=ch[i];
s2->next=s1;
s2=s1;
}
}
void main()
{
Cstring L;
char ch[4]="abc";
initstr(&L);
strval(&L,ch);
} 展开
展开全部
Pstring s1;
initstr(s1);();//执行到这里就内存不能读!!
s1->ch=ch[i];
这里s1,没有分配内存,因为你的Initstr函数写的有问题,不能改变实参的值。
修改Initstr函数,s1正确分配内存就不会造成内存的非法访问即段错误了。
void initstr(Pstring s)//初始化
{
s=(Pstring)malloc(sizeof(Cstring));
s->next=NULL;
}
这里涉及到了对指针的修改,c中函数参数是副本,这样即使修改了只是改变参数的副本,对于实参是没有影响的。应该修改为:
Pstring initstr(void)//初始化
{
Pstring s;
s=(Pstring)malloc(sizeof(Cstring));
s->next=NULL;
return s;
}
或者:
void initstr(Pstring *s)//初始化
{
*s=(Pstring)malloc(sizeof(Cstring));
*s->next=NULL;
}
initstr(s1);();//执行到这里就内存不能读!!
s1->ch=ch[i];
这里s1,没有分配内存,因为你的Initstr函数写的有问题,不能改变实参的值。
修改Initstr函数,s1正确分配内存就不会造成内存的非法访问即段错误了。
void initstr(Pstring s)//初始化
{
s=(Pstring)malloc(sizeof(Cstring));
s->next=NULL;
}
这里涉及到了对指针的修改,c中函数参数是副本,这样即使修改了只是改变参数的副本,对于实参是没有影响的。应该修改为:
Pstring initstr(void)//初始化
{
Pstring s;
s=(Pstring)malloc(sizeof(Cstring));
s->next=NULL;
return s;
}
或者:
void initstr(Pstring *s)//初始化
{
*s=(Pstring)malloc(sizeof(Cstring));
*s->next=NULL;
}
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询