c语言实现:利用结构体实现一个存储库存商品的单向链表。其中,库存商品用结构体类型 STOCK 定义,应至少包含商品 ID(ID),商品名称(name),商品价格(price), 商品库存量(volume);实现如下三个子函数并在 main 函数中进行测试:一为 STocK*read(int n),其从标准输入读入n个商品的信息,建立链表并返回; 二为STOcK*find(SToCK*intindex),遍历链表并返回ID为index(这 里假定商品 ID 唯一)的链表结点,如果没有找到,则返回 NULL;三为释放,即释 放内存中的链表,void release(sTock *head),其中 head 为头节点。(10 分) 注意:要给出结构体的完整定义。
时间: 2023-02-05 10:53:14 浏览: 79
以下是使用结构体实现单向链表存储库存商品信息的代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 50
// 定义结构体类型 STOCK
typedef struct stock {
int ID;
char name[MAX_NAME_LEN];
float price;
int volume;
struct stock *next; // 指向下一个节点的指针
} STOCK;
// 从标准输入读入n个商品的信息,建立链表并返回
STOCK *read(int n) {
STOCK *head, *p, *q;
head = (STOCK *)malloc(sizeof(STOCK));
p = head;
for (int i = 0; i < n; i++) {
q = (STOCK *)malloc(sizeof(STOCK));
scanf("%d%s%f%d", &q->ID, q->name, &q->price, &q->volume);
p->next = q;
p = q;
}
p->next = NULL;
return head;
}
// 遍历链表并返回ID为index的链表结点,如果没有找到,则返回 NULL
STOCK *find(STOCK *head, int index) {
STOCK *p = head->next;
while (p != NULL && p->ID != index) {
p = p->next;
}
return p;
}
// 释放内存中的链表
void release(STOCK *head) {
STOCK *p = head;
while (p != NULL) {
STOCK *q = p->next;
free(p);
p = q;
}
}
int main() {
int n;
printf("输入要读入的商品数量:");
scanf("%d", &n);
STOCK *head = read(n);
printf("读入的商品信息:\n");
STOCK *p = head->next;
while (p != NULL) {
printf("ID: %d, name: %s, price: %.2f, volume: %d\n", p->ID, p->name, p->price, p->volume);
p = p->next;
}
int index;
printf("