gpt4 book ai didi

c - 通过链接列表进行搜索。

转载 作者:行者123 更新时间:2023-11-30 19:45:15 25 4
gpt4 key购买 nike

因此,我一直在尝试了解不使用 malloc 链表但使用 malloc 的常规定义结构之间的区别。

我现在遇到的问题是尝试搜索结构(pi)以查找成本大于搜索中输入的成本的每个零件号。这是我到目前为止的整个计划。我为每个部分添加了评论。

我只是不确定如何搜索每个结构以将其价格与搜索价格进行比较。

#include <stdio.h>
#include <stdlib.h>

struct Item {
int quantity;
float cost;
char partNum[10];
struct Item *next;
};

void printItem(struct Item* pi);
void enterItem(struct Item* pi);

char search [100];

void main(int argc, char* argv[])
{
struct Item *pi;
struct Item *head;
int done = 0;
int i,j;
char choice;

// ENTERING ITEM INTO THE STRUCTURE
head = NULL;
while (!done) {
printf("Enter another item? (y/n)");
choice = getchar();
if (choice == 'y' || choice == 'Y') {
pi = (struct Item *)malloc(sizeof(struct Item));
enterItem(pi);
pi->next = head;
head = pi;
} else {
done = 1;
}
}
// SEARCHING FOR ITEM BY PRICE
printf("Enter a price to find all items more expensive, or type 'exit':");
while (strcmp(search, "exit") !=0) {
gets(search);
for (j = 0; j<i ; i++) {
if (strcmp(pi[j].cost, search) ==0) {
printItem(pi);
pi = pi->next;
}
}
}


}
getchar();
getchar();
}
// FUNCTION FOR PRINTING STRUCTURE ITEM
void printItem(struct Item* pi) {
printf("Quantity: %d\n", pi->quantity);
printf("Cost: $%.2f\n", pi->cost);
printf("Part # %s\n", pi->partNum);
printf("\n\n");
}

// FUNCITON FOR ENTERING IN NEW ITEM
void enterItem(struct Item* pi) {
printf("Quantity? ");
scanf("%d", &pi->quantity);
printf("Cost? ");
scanf("%f", &pi->cost);
getchar(); //need to clear out the carriage return from typeing in the cost
printf("Part Number? ");
gets(pi->partNum);
}

最佳答案

您做错的地方是使用strcmp将字符串(search变量)与 float (cost变量)进行比较。这不会给你想要的输出。

相反,让我们使用-1来指示退出,因为解析字符串并将其转换为 float 是偏离主题的。开始从 head 迭代直至找到 NULL,并比较每件商品的价格。

float price;
struct Item *it = head;
printf("Enter a price to find all items more expensive, or type '-1' to exit:");
scanf("%f", price);

// check price for the 'exit' -- compare with -1

while (it != NULL) {
if (it->cost > price)
printItem(pi);

it = it->next;
}

关于c - 通过链接列表进行搜索。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26700677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com