总和链表

时间:2011-09-22 04:49:35

标签: c linked-list

我需要在链表中加一个变量。我有以下功能,但我在注意到的线路上遇到错误。我还认为我可能没有正确完成if语句以将求和的值返回给函数。

int print_nodeprice1 (node *headptr, int num) {
int sum = 0;
node *first;
first = *headptr;    // getting errors that I can't assign this
while (first != NULL) {
    first = first -> next_ptr;
    if (num == first -> price1)
        return sum;
    else {
        printf("\n");
    }
  }
}

6 个答案:

答案 0 :(得分:1)

first = headptr;   

这将起作用..因为它们都是类型(节点*)

答案 1 :(得分:1)

你有几个问题:

  1. 分配first = headptr,而不是* headptr
  2. 在设置first =之前,在循环顶部进行num检查 一线>接着
  3. 你实际上并没有总结任何东西。你的意思是增加你的 和变量?

答案 2 :(得分:0)

first = *headptr;    // getting errors that I can't assign this

正确 - 您正在尝试将值(取消引用)分配给指针。

first = headptr;

除此之外......目前还不清楚你的意思是“在我的链表中加一个变量”。当代码发现0等于您传入的price1时,代码会返回num

答案 3 :(得分:0)

int print_nodeprice1 (node *headptr, int num) {
node *first;
first = *headptr;    // getting errors that I can't assign this

first是指向node的指针,headptr也是指向node的指针。现在,您尝试将first的结果分配给引用headptr

答案 4 :(得分:0)

您不需要*。它应该只是:

first = headptr;

firstheadptr属于node*类型。 *运算符取消引用它们,因此*headptr的类型为node,而不是node*

答案 5 :(得分:0)

first是指向node的指针。 headptr是指向node的指针。 *headptr是一个节点。您无法将node指定给指向node的指针。