typedef struct _tag_circlelist //頭節點
tcirclelist;
circlelist* circlelist_creat()
memset(ret, 0, sizeof(tcirclelist));
ret->header.next = null;
ret->slider = null;
ret->length = 0;
return ret;
}void circlelist_destory(circlelist* list)
}void circlelist_clear(circlelist* list)
int circlelist_length(circlelist* list)
return tlist->length;
}int circlelist_insert(circlelist* list, circlelistnode* node, int pos)
current = &(tlist->header); //current指向頭結點;
for (i = 0; i < pos && (current->next!=null); i++)
node->next = current->next;
current->next = node;
//若第一次插入節點,則游標指向第乙個節點
if (tlist->length == 0)
tlist->length++;
//當是頭插法的時候,需要執行的操作 跳0步 沒有跳走
if (current == (circlelistnode*)tlist)
ret = 1;
return ret;
}circlelistnode* circlelist_get(circlelist* list, int pos)
circlelistnode* current = null;
current = &(tlist->header);
for (i = 0; i < pos; i++)
return current->next;
}//根據位置刪除
circlelistnode* circlelist_delete(circlelist* list, int pos)
//刪除第乙個節點
if (current == (circlelistnode*)tlist)
ret = current->next;
current->next = ret->next;
tlist->length--;
//鍊錶不為空且刪除第乙個節點的操作
if (last != null)
//若刪除為游標所指元素
if (tlist->slider == ret)
//如果鍊錶為空了
if (tlist->length == 0)
}return ret;
}//刪除特定節點
circlelistnode* circlelist_deletenode(circlelist* list, circlelistnode* node)
current = current->next;
} //根據位置刪除
if (ret != null)
}return ret;
}//游標復位 指向第一位元素
circlelistnode* circlelist_reset(circlelist* list)
return ret;
}//當前游標指向
circlelistnode* circlelist_current(circlelist* list)
return ret;
}//游標下一
circlelistnode* circlelist_next(circlelist* list)
return ret;
}
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "circlelist.h"
typedef struct value
value;
int main()
printf("tmp->v: %d\n", tmp->v);
} printf("\n");
//游標復位
circlelist_reset(list);
//頭部刪除資料
while (circlelist_length(list)>0)
tmp = (value*)circlelist_current(list);
printf("刪除:%d\n", tmp->v);
circlelist_deletenode(list, (circlelistnode*)tmp);
} //銷毀鍊錶
迴圈鍊錶實現約瑟夫問題
高階約瑟夫問題 總結 初學資料結構的迴圈鍊錶,正好利用迴圈鍊錶可以很容易的解決上述問題。include include include typedef int elemtype define len sizeof node define n 41 總人數 41 define m 3 密碼固定為3 t...
約瑟夫問題 迴圈鍊錶簡單解決
約瑟夫求生最初版本 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了乙個自殺方式,41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下乙個重新報數,直到所有人都自殺身亡為止。然而josep...
約瑟夫問題的迴圈鍊錶實現
據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了乙個自殺方式,41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下乙個重新報數,直到所...