主题:[讨论]用C写的串的链式存储表示,请帮我看一下错以哪里
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
#include<stdlib.h>
#define NULL 0
#define CHUNKSIZE 10
#define LEN sizeof(struct chun)
typedef struct chun
{
char *ch;
struct chun *next;
}chunk;
struct list
{
chunk *head,*tail;
int curlen;
}lstring;
int strlength(char *s)
{ //返回串s的长度
int i=0;
while(s[i++])
;
return i-1;
}
chunk *strcreat(char *s)
{ //对串s进行链式存储,每个结点默认为CHUNKSIZE,每个结点最后一个字符位存放'\0'
chunk *p1,*p2;
int cur=0,i;
lstring.curlen=0;
p1=p2=(chunk*)malloc(sizeof(LEN)); //开辟结点
p1->ch=(char*)malloc(sizeof(char)*CHUNKSIZE);//开辟结点中存放串的空间
lstring.head=NULL;
for(i=0;i<strlength(s);i++,cur++)
{
if(cur==CHUNKSIZE-1)
{
if(lstring.head==NULL)
lstring.head=p1;
p1->ch[cur]='\0';
// printf("%s",p1->ch);
cur=0;
p2->next=p1;
p2=p1;
p1=(chunk*)malloc(sizeof(LEN));
p1->ch=(char*)malloc(sizeof(char)*CHUNKSIZE);
}
p1->ch[cur]=s[i];
lstring.curlen++;
}
p1->ch[cur]='\0'; //最后一个结点的最后一个字符位存放'\0';
// printf("%s\n",p1->ch);
p1->next=NULL;
return lstring.head;
}
void print(chunk *head)
{ //打印链表
chunk *p;
p=head;
for(p=head;p!=NULL;p=p->next)
printf("%s,",p->ch);
printf("\n");
}
void main()
{
chunk *head;
char *s="abcdefghijklmnopqrstuvwxykwlqjfeioqpiurioewqjfklnwqioputz";
// printf("%s\n",s);
head=strcreat(s); //引用函数,对串s进行链式存储。
print(head);
}
运行输出时,老是提示出错,请帮我检验一下
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
#include<stdlib.h>
#define NULL 0
#define CHUNKSIZE 10
#define LEN sizeof(struct chun)
typedef struct chun
{
char *ch;
struct chun *next;
}chunk;
struct list
{
chunk *head,*tail;
int curlen;
}lstring;
int strlength(char *s)
{ //返回串s的长度
int i=0;
while(s[i++])
;
return i-1;
}
chunk *strcreat(char *s)
{ //对串s进行链式存储,每个结点默认为CHUNKSIZE,每个结点最后一个字符位存放'\0'
chunk *p1,*p2;
int cur=0,i;
lstring.curlen=0;
p1=p2=(chunk*)malloc(sizeof(LEN)); //开辟结点
p1->ch=(char*)malloc(sizeof(char)*CHUNKSIZE);//开辟结点中存放串的空间
lstring.head=NULL;
for(i=0;i<strlength(s);i++,cur++)
{
if(cur==CHUNKSIZE-1)
{
if(lstring.head==NULL)
lstring.head=p1;
p1->ch[cur]='\0';
// printf("%s",p1->ch);
cur=0;
p2->next=p1;
p2=p1;
p1=(chunk*)malloc(sizeof(LEN));
p1->ch=(char*)malloc(sizeof(char)*CHUNKSIZE);
}
p1->ch[cur]=s[i];
lstring.curlen++;
}
p1->ch[cur]='\0'; //最后一个结点的最后一个字符位存放'\0';
// printf("%s\n",p1->ch);
p1->next=NULL;
return lstring.head;
}
void print(chunk *head)
{ //打印链表
chunk *p;
p=head;
for(p=head;p!=NULL;p=p->next)
printf("%s,",p->ch);
printf("\n");
}
void main()
{
chunk *head;
char *s="abcdefghijklmnopqrstuvwxykwlqjfeioqpiurioewqjfklnwqioputz";
// printf("%s\n",s);
head=strcreat(s); //引用函数,对串s进行链式存储。
print(head);
}
运行输出时,老是提示出错,请帮我检验一下