新手提问,关于管理信息系统的输出

问题遇到的现象和发生背景

我用链表写了一个药品管理信息系统,想要通过输入内服,输出相关的全部内容,不知道要怎么操作?

用代码块功能插入代码,请勿粘贴截图

Node* searchnum(Node* head, char* num)//查找
{
Node* pmove = head->next;
if (pmove == NULL)
{
return pmove;
}
else
{
while (strcmp(pmove->data.num, num))
{
pmove = pmove->next;
if (pmove == NULL)
break;
}
}
return pmove;
}

void printnode(Node* lsnode)//输出
{
printf("药品名称 编号\t内服\外用\t主副作用\n");
printf("%-10s\t\t%s\t%s\t\t%s\n", lsnode->data.medname, lsnode->data.num, lsnode->data.work, lsnode->data.function);
}

printnode(searchnum(list, temdata.num));//输出编码的药品信息

运行结果及报错内容
我的解答思路和尝试过的方法

上面是我写的根据药品编号输出该药品的信息,但是该方法只能输出一条。不知道有什么办法可以输入内服,输出相关的全部内容?

我想要达到的结果

img

回答:实际上是链表的遍历,可以从头节点开始,然后采用 while 循环遍历,在指针不为 NULL 时,一直输出即可

Node* searchnum(Node* head, char* num)//查找
{
    Node* pmove = head->next;
    if (pmove == NULL)
    {
        return pmove;
    }
    else
    {
        while (strcmp(pmove->data.num, num))
        {
            pmove = pmove->next;
            if (pmove == NULL)
                break;
        }
    }
    return pmove;
}

void printnode(Node* lsnode)//输出
{
    printf("药品名称 编号\t内服\外用\t主副作用\n");
    Node* cur = head;
    while(cur != NULL)
    {
        printf("%-10s\t\t%s\t%s\t\t%s\n", lsnode->data.medname, lsnode->data.num, lsnode->data.work, lsnode->data.function);
        cur = cur->next;
    }
}