哪位能写一下,谢了!急!

img

供参考:

#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define NULL 0
#define LEN sizeof(struct String)
struct String
{
    char s[32];
    struct String* next;
};
int n; //单词数
struct String* creat_list(void)
{
    struct String* head, * p1, * p2;
    p1 = p2 = (struct String*)malloc(LEN);
    head = NULL;
    for (n = 0; n <= 9;)
    {
        n = n + 1;
        scanf("%s", p1->s);
        if (n == 1) head = p1;
        else p2->next = p1;
        p2 = p1;
        p1 = (struct String*)malloc(LEN);
    }
    p2->next = NULL;
    return(head);
}
struct String* insert_list(struct String* head, char* s, int x)
{
    int m = 0;
    struct String* p1, * p2, * p;
    p1 = p2 = head;
    while (m != x && p1 != NULL)
    {
        p2 = p1;
        p1 = p1->next;
        m = m + 1;
    }
    if (m == x)
    {
        p = (struct String*)malloc(LEN);
        p2->next = p;
        strcpy(p->s, s);
        p->next = p1;
        n = n + 1;
    }
    else printf("Wrong destination!\n");
    return(head);
}
void search_list(struct String* head, char* s)
{
    int m = 1;
    int x = 0;
    struct String* p;
    p = head;
    while (p != NULL)
    {
        while (strcmp(p->s, s) != 0 && p->next != NULL)
        {
            p = p->next;
            m = m + 1;
        }
        if (strcmp(p->s, s) == 0)
        {
            x = x + 1;
            printf("No.%d is %s!\n", m, s);
        }
        else if (x == 0) printf("%s not found!\n", s);
        p = p->next;
        m = m + 1;
    }
}
struct String* delete_list(struct String* head, char* s)
{
    int m = 0;
    struct String* p1, * p2 = NULL, * q = NULL;
    p1 = head;
    if (head == NULL)
    {
        printf("\nlist null!\n");
        return(head);
    }
    while (p1 != NULL)
    {
        if (strcmp(p1->s, s) == 0)
        {
            m = m + 1;
            q = p1;
            if (p1 == head)
            {
                if (head->next != NULL)
                {
                    head = p1->next;
                    p1 = head;
                }
                else {
                    head = NULL;
                    p1 = NULL;
                }
            }
            else {
                p2->next = p1->next;
                p1 = p2;
            }
            free(q); q = NULL;
            printf("delete char %s %dst!\n", s, m);
            n = n - 1;
        }
        else
        {
            p2 = p1;
            p1 = p1->next;
        }
    }
    if (m == 0) printf("%s not found!\n", s);
    return(head);
}
void print(struct String* head)
{
    struct String* p;
    if (head == NULL) return;
    p = head;
    printf("\nNow the %d characters are:\n", n);
    do
    {
        printf("%s ", p->s);
        p = p->next;
    } while (p != NULL);
}
int  main()
{
    char ins_char[32], search_char[32], del_char[32];
    int x;
    struct String* head, * p1 = nullptr, * p2 = nullptr;
    printf("Input 10 string:\n");
    head = creat_list();
    print(head);
    printf("\nInput the inserted char:");
    scanf("\n");
    scanf("%s", ins_char);
    printf("Input the destination:");
    scanf("%d", &x);
    while (strcmp(ins_char, "0") != 0)//字符串 “0”结束插入
    {
        head = insert_list(head, ins_char, x);
        print(head);
        printf("\nInput the inserted char:");
        scanf("\n");
        scanf("%s", ins_char);
        printf("\nInput the destination:");
        scanf("%d", &x);
    }
    printf("\nInput the searched char:");
    scanf("\n");
    scanf("%s", search_char);
    while (strcmp(search_char, "0") != 0)//字符串 “0”结束查询
    {
        search_list(head, search_char);
        printf("\nInput the searched char:");
        scanf("\n");
        scanf("%s", search_char);
    }
    printf("\nInput the deleted char:");
    scanf("\n");
    scanf("%s", del_char);
    while (strcmp(del_char, "0") != 0)//字符串 “0”结束删除
    {
        head = delete_list(head, del_char);
        print(head);
        printf("\nInput the deleted char:");
        scanf("\n");
        scanf("%s", del_char);
    }
    return 0;
}