typedef struct tape
{
char symbol;
struct tape *next;
struct tape *prev;
}tape;
tape *pt;
void ShowCurrentCombination()
{
tape currentNode;
currentNode = *pt;
while(pt->prev != NULL)
pt=pt->prev;
while(pt->next != NULL)
{
if(pt == ¤tNode) //this is never true :(
putc("[q]",stdout);
putc(pt->symbol,stdout);
pt=pt->next;
}
putc(pt->symbol,stdout);
}
この関数は、左側の「[q]」で現在の要素をマークするリストの内容を表示する必要があります。残念ながら、プレーンデータのみが表示されます。なんで?
完全を期すために、リストを初期化する関数を紹介しましょう。
void GenerateInputTape(int n)
{
int i;
pt=(tape*)malloc(sizeof(tape));
pt->symbol='B';
pt->prev=NULL;
pt->next=(tape*)malloc(sizeof(tape));
pt->next->prev = pt;
pt=pt->next;
for(i=0;i<2*n+1;i++)
{
if(i < (2*n/2))
pt->symbol='0';
else
pt->symbol='1';
pt->next=(tape*)malloc(sizeof(tape));
pt->next->prev = pt;
pt=pt->next;
}
pt->symbol='B';
pt->next=NULL;
}