哪位给写一下,谢了!

创建一个链表,10个节点里内容放字符串(单词)把他们链起来。任一单词能插入,删除。计数链表的单词数。放在.h的文件中。

参考代码

#include <stdio.h>
#include <stdlib.h>
typedef struct Link{
    char *str;
    struct Link *next;
}link;
link * initLink(char *sa[], int n);
link * insertElem(link * p, char *str, int add);
link * delElem(link * p,int add);
int count(link *p);
void display(link *p);
int main() {
    char *sa[] ={"aaa","bbb","ccc","ddd","eee","fff","ggg","hhh","iii","jjj"};
    printf("初始化链表为:\n");
    link *p=initLink(sa,10);
    display(p);
    printf("在第4的位置插入zzz:\n");
    p=insertElem(p, "zzz", 4);
    display(p);
    printf("删除元素3:\n");
    p=delElem(p, 3);
    display(p);
    printf("统计元素个数:%d\n",count(p));
    return 0;
}
link * initLink(char *sa[], int n){
    link * p=(link*)malloc(sizeof(link));//创建一个头结点
    link * temp=p;//声明一个指针指向头结点,用于遍历链表
    for (int i=0; i<n; i++) {
        link *a=(link*)malloc(sizeof(link));
        a->str=sa[i];
        a->next=NULL;
        temp->next=a;
        temp=temp->next;
    }
    return p;
}
link * insertElem(link * p, char *str, int add){
    link * temp=p;//创建临时结点temp
    //首先找到要插入位置的上一个结点
    for (int i=1; i<add; i++) {
        if (temp==NULL) {
            printf("插入位置无效\n");
            return p;
        }
        temp=temp->next;
    }
    //创建插入结点c
    link * c=(link*)malloc(sizeof(link));
    c->str=str;
    //向链表中插入结点
    c->next=temp->next;
    temp->next=c;
    return  p;
}
link * delElem(link * p,int add){
    link * temp=p;
    //遍历到被删除结点的上一个结点
    for (int i=1; i<add; i++) {
        temp=temp->next;
    }
    link * del=temp->next;//单独设置一个指针指向被删除结点,以防丢失
    temp->next=temp->next->next;//删除某个结点的方法就是更改前一个结点的指针域
    free(del);//手动释放该结点,防止内存泄漏
    return p;
}
int count(link *p){
    link* temp=p;//将temp指针重新指向头结点
    int n = 0;
    while (temp->next) {
        temp=temp->next;
        n++;
    }
    return n;
}
void display(link *p){
    link* temp=p;//将temp指针重新指向头结点
    //只要temp指针指向的结点的next不是Null,就执行输出语句。
    while (temp->next) {
        temp=temp->next;
        printf("%s ",temp->str);
    }
    printf("\n");
}

img