-1

私のコードは次のとおりです(これは、新しいノードを追加する、二重にリンクされたリスト構造用です):

    void addhead(student* node_, student*& olist)
    {
        if(!olist)
        {
            olist=node_;
        }   
        else
        {
            node_->flink=olist;
            node_->blink=last(olist);  //ERROR
            olist->blink=node_;
            last(olist)->flink=node_;  //ERROR
            olist=node_;
        }
    }

関数の「識別子が見つかりません」というエラーが表示されlast()ます。

私の学生の構造体と配列の初期化は次のとおりです。

public struct student
        {
        public:
        char ogrNo[13];
        char isim[100];
        char tck[11];
        char dYeri[50];
        char dTarihi[50];
        char bolum[255];
        char sinif[100];
        char mail[50];
        char cep[50];
        char adres[255];


        ogrenci* blink;
        ogrenci* flink;
        };

student* o=(student*)malloc(sizeof(student));

last()C++/CLI (Studio.NET 2010) で関数または同等のものを実装する方法はありますか? このコードは、アンマネージ C++ に対してクリーンです。

4

3 に答える 3

0

管理する最初最後のメンバーを追加して、それらが常にリストの最初と最後のノードを指すようにすることができます。

ただし、すべてのクラスにリンクリスト機能を実装する必要はありません。C++/CLIにはすでにリンクリストクラスがあります。

  • System :: Collections :: Generic :: LinkedList
  • cliext :: list
  • std :: list
于 2013-01-06T00:02:49.047 に答える
0

私は自分で問題を解決しました...すべての貢献のおかげで、今後のコメントも役に立ちます。

System::Collections::Generic::LinkedList クラスを試してみましたが、Struct または Class Array の LinkedList を定義することは不可能であることがわかりました (ref としてかどうかに関係なく)。

次に、C++/CLI でサポートされていない last() 関数をバイパスするために、

int last=-1;

構造体配列の最後の要素を処理します。次に、上記のコードを次のように変更します。

void addhead(ogrenci* node_, ogrenci*& olist)
    {
        if(!olist)
        {
            olist=node_;
            last++;
        }   
        else
        {
            node_->flink=olist;
            node_->blink=&olist[last];  //Orig: node_->blink=last(olist);
            olist->blink=node_;
            olist[last].flink=node_;    //Orig: last(olist)->flink=node_;
            olist=node_;
            last++;
        }
    }

これで問題は解決しましたが、コメントをお待ちしています...

于 2013-01-06T20:13:37.763 に答える
0

この行はどういう意味ですか? つまり、なぜこれら 2 つの文字が一緒に *& なのですか?

       void addhead(student* node_, student*& olist)
于 2013-11-14T13:36:02.797 に答える