我有一个方法可以在链接列表的开头插入:
void insertBegin(int value)
{
struct node *var;
var=(struct node *)malloc(sizeof (struct node));
var->data=value;
if(head==NULL)
{
head=var;
head->next=NULL;
}
else
{
var->next=head;
head=var;
}
}
在主要方法中,我使用上面的方法在开头插入一些元素:
int main{
int actual[] = {50, 70, 80, 100, 77, 200, 44, 70, 6, 0};
int expected[] = {0, 6, 70, 44, 200, 77, 100, 80, 70, 50};
for(i=0; i<listsize; i++){
insertBegin(actual[i]);
}
if(verify(expected))
printf("correct");
else
printf("incorrect");
return 0;
}
在上面的主要方法中,我有方法验证实际数组是否等于预期的数组。但验证方法无法正常工作,因为我总是收到消息“不正确”,但列表是相同的。
你看到了什么问题吗?
验证方法:
int verify(int expected[]) {
struct node *temp;
int i;
if (head == NULL)
return -1;
if (expected[0] != head->data)
return -1;
i = 1;
temp = head->next;
for (i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (temp->data == expected[i])
return true;
else
return false;
}
}
return 0;
}
答案 0 :(得分:0)
试试这个:
bool verify(int expected[]) {
struct node *temp = head;
int i = 0;
if(temp == NULL)
return false;
while(temp){
if(expected[i++] != temp->data)//if(i == listsize || expected[i++] != temp->data)
return false;
temp = temp->next;
}
return true;
}