特定の入力順序で循環リンクリストをトラバースしたいのですが、(v1->v2->v3)
次のように言いましょう
{v1,v3,v2,v2,v1,v3,v2,v1,v1,v3,v2,v2,v1,v2,v3}
.
以下のプログラムは 3 つのノードのテストとして作成し、8、64、512、4096 などのノードに対して段階的にスケーリングしたいと考えています。
私の実装の考えでは、以下のプログラムAbstract State Machine
は、以下の関数のみを処理の入力として受け入れる上でのみ実行する必要があります。engine_spin_at_gear()
私は基本的に、トラバース中のループ回数を最小限に抑えたいと考えています。私は、non-blocking
そのような非常識なものを使用して、rpm などの測定単位でabstraction
模倣/仮想化process-execution
するモードにあるかもしれませんengine-spin
が、機能のデバッグに関する提案が本当に欲しいengine_spin_at_gear()
です。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MILES 15
struct package
{
// ... other members data ...
struct package *next;
}*v1, *v2, *v3;
int input_arr[MILES] = {1,3,2,2,1,3,2,1,1,3,2,2,1,2,3};
struct package *base(struct package *_vN)
{
if (_vN)
return _vN;
else
return NULL;
}
struct package *deliver(struct package *_vNP)
{
if (_vNP)
return base(_vNP->next);
else
return NULL;
}
void shift_gear(struct package *_feed)
{
_feed->next = NULL;
}
struct package *engine_spin_at_gear(struct package *_init_cycle0, int countSession)
{
while (countSession--) {
shift_gear(_init_cycle0);
return deliver(base(_init_cycle0));
}
return NULL;
}
struct package *journey(struct package *_current_frame, int _start, int _end)
{
int rpm = (_end > _start)?_end-_start:_start-_end;
if (rpm)
return engine_spin_at_gear(_current_frame, rpm);
else
return v1;
}
struct package *ignition_phase(int _batteryS, int _chargedL)
{
return journey(v1, _batteryS, _chargedL);
}
void transmit_in_order(int*input_arr)
{
struct package *v6;
int i;
for (i=0; i<MILES-1; i++) {
v6 = ignition_phase(input_arr[i], input_arr[i+1]);
printf("%p\n", v6);
}
}
int main()
{
v1 = malloc(sizeof(struct package));
v2 = malloc(sizeof(struct package));
v3 = malloc(sizeof(struct package));
v1->next = v2;
v2->next = v3;
v3->next = v1;
printf("v1=%p\tv2=%p\tv3=%p\n", v1, v2, v3);
transmit_in_order(input_arr);
return 0;
}
Linux でプログラムの GCC 実行可能ファイルを実行すると、次の出力が得られます。
v1=0x918b008 v2=0x918b018 v3=0x918b028
(nil)
(nil)
0x918b008
(nil)
(nil)
(nil)
(nil)
0x918b008
(nil)
(nil)
0x918b008
(nil)
(nil)
(nil)
(nil)
または、機能を変更する必要がありshift_gear()
ますか? そのまま維持しながら、さらに最適化できますscalability-factor
か? 前もって感謝します。C++
これらすべての機能をasClass Engine
およびに入れたい場合Class Gearbox
、プロトタイプを見せてもらえますか?