下のコードでドットプロダクトの計算式をリンクリストの実装に実装しようとしていますが、以下のエラーが発生しています: 'B'のメンバー 'add_node'これはポインタ型の 'linked_list {aka node *}'です(おそらく、 ' - >'を使うことを意図していましたか?) どうすればよいでしょうか?私もクラスを使用したくないです。ドットプロダクト計算リンクリストの実装
#include <iostream>
#include <stdlib.h>
using namespace std;
struct node
{
int data;
int index;
node *next;
};
typedef node* linked_list;
node *head = NULL;
node *tail = NULL;
void add_node(int i,int n)
{
node *tmp = new node;
tmp->index = i;
tmp->data = n;
tmp->next = NULL;
if(head == NULL)
{
head = tmp;
tail = tmp;
}
else
{
tail->next = tmp;
tail = tail->next;
}
}
void display(node *head)
{
while(head!=0)
{
cout << head->index <<" ," << head->data << endl;
display(head->next);
break;
}
}
int main()
{
linked_list A;
A.add_node(2,7);
A.add_node(4,5);
A.add_node(7,8);
A.add_node(9,4);
linked_list B;
B.add_node(3,5);
B.add_node(4,6);
B.add_node(9,5);
int product=0;
while(A!=0 && B!=0)
{
if(A->index == B->index)
{
product = product + A->data * B->data;
A=A->next;
B=B->next;
}
else if(A->index < B->index)
{
A=A->next;
}
else
{
B=B->next;
}
}
return product;
return 0;
}
あなた 'node'構造体には、メンバ関数を持っていません。一般的に、ポインタ付きのtypedefを使用すると、悲しいことが起こります。 –
私は、これらの教師は、ここで一日に20回来る「リンクされたリストの割り当て」の質問を偽装する斬新な方法を考え出すことができます。リンクされたリストを使って内積を計算するか?次は何ですか? – PaulMcKenzie
1つのグローバル 'head'と' tail'に2つの異なるリンクリストを実行しようとしています。これは動作しません。私はあなたが2つを分割するリンクリストクラスを作成したいと思います。 – user4581301