我目前面临着一个问题,我的代码时,试图一个链接表的总和,我试图调用链接表从我的代码和我有麻烦编译。我不知道该怎么办在这种情况下。
PE12.c: In function ‘sumOfLinkedList’:
PE12.c:69:28: error: invalid operands to binary + (have ‘Link’ and ‘struct Link’)
sum = *current_link + *current_link->next;
^
这是我目前得到的编译错误。
这是我的代码
#include <stdio.h> /* for printf */
#include <stdlib.h> /* for malloc, free, NULL */
#include "link.h"
#define ARR_SZ 6
/* function for step 1 */
Link* getNewLink(int value, Link* next);
/* function for step 4 */
void printLinkedList(Link* head);
/* function for step 5 */
int sumOfLinkedList(Link* head);
int main() {
Link* head = NULL;
int array[ARR_SZ] = {7, 1, -4, 16, 0, 3};
int arrLen = ARR_SZ;
int i = 0;
/* Step 1: add the value -2 to the linked list */
getNewLink(-2, head);
/* TODO - Your code for Step 1 goes here
* You must also implement getNewLink() */
/* Step 2: print the value at head */
printf("%p", head);
/* TODO - Your code for Step 2 goes here */
/* Step 3: add the 6 values from array to the linked list */
for(i=0; i <= array[i] && i < arrLen; ++i) {
getNewLink(i, head);
}
/* TODO - Your code for Step 3 goes here */
/* Step 4 */
printLinkedList(head);
/* Step 5 */
printf("The sum is: %d\n", sumOfLinkedList(head));
return EXIT_SUCCESS;
}
Link* getNewLink(int value, Link* next) {
Link* newNode = (Link*) malloc(sizeof(Link));
newNode->value = value;
newNode->next = NULL;
return newNode;
}
void printLinkedList(Link* head) {
while (head != NULL) {
printf("%d ", head->value);
head = head->next;
}
}
int sumOfLinkedList(Link* head) {
int sum;
Link *current_link = head;
while ( current_link != NULL) {
printf("%d ", current_link->value);
sum = *current_link + *current_link->next;
}
return sum;
}
谁能给我解释一下我在这里做错了什么?
1条答案
按热度按时间2ledvvac1#
需要将
current_link->value
添加到sum
中。解除指针引用返回Link
结构,该结构不能被添加。您必须通过
next
指针遍历列表。您还必须将
sum
初始化为0
。不需要单独的
head
和current_link
变量,可以在循环中使用同一个变量作为函数参数。