搜索某个节点的链接列表

时间:2014-03-12 11:16:22

标签: c struct linked-list

我已经创建了我的节点(汽车)所需的数据。

struct data {
  char carReg[10];
  char make[20], model[20], colour[20];
  int numPrevOwners;
  bool reserved;
  float reserveAmount;
};

我还为节点创建了模板并声明了全局变量。

struct node {
struct data *element;
struct node *next;
};


struct node *front = NULL;
struct node *last = NULL;

在我的viewSpecific()方法中,我希望用户输入一个唯一的carReg,然后它将找到存储它的节点并显示它。

这是我到目前为止所做的:

void viewSpecific() {
char result[10];

printf("Please enter the registration of the car yiew wish to view.");
scanf("%s", &result);

struct node *current, *previous;
bool notFound = true;

 printf("\n");
if (isEmpty())
    printf("Error - there are no nodes in the list\n");
else  {

我不太确定在此之后该怎么做。

1 个答案:

答案 0 :(得分:1)

检查用户输入的carReg是否与当前节点的carReg相同。 如果它没有前进到下一个节点。 如果你到达列表的末尾,那是因为找不到carReg。

/* basically, something like */
current = front;
while (current != NULL) {
    if (strcmp(current->element->carReg, userCarReg) == 0) /* found */ break;
    current = current->next;
}
if (current == NULL) {
    printf("carReg not found\n");
} else {
    printf("carReg: %s\n", current->element->carReg);
    printf("make: %s\n", current->element->make);
    printf("previous owners: %d\n", current->element->numPrevOwners);
}