我知道这个问题今晚已被多次询问,但似乎没有一个问题得到解决。显然这是一个家庭作业问题,但在课堂上并没有彻底解释,因此关于这个主题的问题很多。目标是实现一个函数,该函数将链表的正元素相加,并返回结果。
我能从堆栈中获取头指针并将其放入EBX,问题是我不知道如何移动到链表的下一个节点,而且我也不知道如何检查是否已到达链表的末尾。如果有人能引导我走向正确的方向,那将非常感激!我当前的代码,包括评论,在下面。
__declspec(naked) int positiveSum(struct Node *head) {
__asm{
PUSH EBX
MOV EAX, 0
MOV EBX, [ESP+8] // put pointer from stack into ebx
ADD EAX, [EBX] // add value in first node to eax
POP EBX
ret
}
}
struct Node{
int e;
struct Node *next;
};
struct Node * createList(int * Arr, int len) {
if (len == 0) {
return NULL;
}
struct Node *head = (struct Node*)malloc(sizeof(struct Node));
head->e = Arr[0];
struct Node *tail = head;
for (int i = 1; i < len; i++) {
struct Node *next = (struct Node*)malloc(sizeof(struct Node));
tail->next = next;
tail = next;
tail->e = Arr[i];
}
tail->next = NULL;
return head;
}