/*函数getword的功能是将字符串s中的单词分离出来(单词之间 可以有一个或多个空格分隔),分离出的单词采用链表的方式存 储在w[]的每一行,函数返回单词的个数*/

已知不带头结点的字符单链表存储结构定义如下:

#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结构为:

img

函数的返回值为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;
  }
}