我想以给定的输入顺序遍历循环链表(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
使用这种疯狂的模式abstraction
来模拟/虚拟process-execution
化为一个engine-spin
以 rpm 为测量单位的模式,但我真的很想要关于调试该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
中,你能给我看一个原型吗?