已知不带头结点的字符单链表存储结构定义如下:
#include
#include
typedef char datatype;
typedef struct node
{ datatype data;
struct node *next;
}linknode;
typedef linknode *linklist;
函数int getword(linklist w[],char *s)的功能是将字符串s中的单词分离出来(单词之间可以有一个或多个空格分隔),分离出的单词采用链表的方式存储在w[]的每一行,函数返回单词的个数。
例如,若有定义linklist ws[80]={NULL},当字符串s为“College of Computer Information and Engineering”时,函数调用n=getword(ws,s);生成的链表数组ws结构为:
函数的返回值为6。请将函数test_2.c中的getword函数补充完成,并进行调试,请勿修改main函数!!
int getword(linklist w[],char *s)
{
linklist p,pre,q;
p=s;
char c=32;
while(p!=c)
{
}
}
int main()
{ char *s="College of Computer Information and Engineering";
char *t=" Hello! My is name Tony.";
int i,n;
linklist ws[80]={NULL};
linklist wt[80]={NULL};
n=getword(ws,s); //分离出字符串s中的所有单词
for (i=0;i//输出所有单词
print(ws[i]);
n=getword(wt,t); //分离出字符串t中的所有单词
for (i=0;i//输出所有单词
print(wt[i]);
for (i=0;i//释放所有单词链表
delList(ws[i]);
for (i=0;i//释放所有单词链表
delList(wt[i]);
return 0;
}
头文件:
#include
#include
typedef char datatype;
typedef struct node
{
datatype data;
struct node *next;
}linknode;
typedef linknode *linklist;
/*输出不带头结点的单链表*/
void print(linklist head)
{
linklist p;
p=head;
while(p)
{
printf("%c",p->data);
p=p->next;
}
printf("\n");
}
/*释放单链表的内容*/
void delList(linklist head)
{
linklist p=head;
while (p)
{
head=p->next;
free(p);
p=head;
}
}