我用链表写了一个药品管理信息系统,想要通过输入内服,输出相关的全部内容,不知道要怎么操作?
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));//输出编码的药品信息
上面是我写的根据药品编号输出该药品的信息,但是该方法只能输出一条。不知道有什么办法可以输入内服,输出相关的全部内容?
回答:实际上是链表的遍历,可以从头节点开始,然后采用 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;
}
}