三 單向迴圈鍊錶

2021-08-22 04:52:50 字數 2328 閱讀 4665

1.概念

2.初始化

3.插入、刪除同單項鍊表一樣

4.遍歷

5.例項(用單向迴圈鍊錶實現「數3出局」遊戲(josephu問題)。首先建立乙個包含若干整數的單項迴圈鍊錶,然後從第乙個節點開始數,把數到3的那個節點刪除,接著下乙個節點開始數,數到3繼續刪除,以此類推,列印出最後剩餘的那個節點)

// linklist.h

#ifndef _linklist_h_

#define _linklist_h_

#include #include #include typedef int datatype;

typedef struct linklist_node link_list, *link_plist;

extern void init_linklist(link_plist *h);

extern int length_linklist(link_plist l);

extern bool inster_linklist(link_plist l, int i, datatype data);

extern bool empty_linklist(link_plist l);

extern bool del_linklist(link_plist l, int i);

extern void show_linklist(link_plist l);

#endif

// linklist.c

#include "linklist.h"

void init_linklist(link_plist *h)

(*h)->next = *h;

}// 計算鍊錶的長度

int length_linklist(link_plist l)

return i;

}// 向鍊錶i位置插入資料data,成功返回true,失敗返回false

bool inster_linklist(link_plist l, int i, datatype data)

// 找到要插入新結點的位置

for (j = 0; j < i; j++)

p = p->next;

// 插入資料

new = (link_plist)malloc(sizeof(link_list));

if (new == null)

new->data = data;

new->next = p->next;

p->next = new;

return true;

}// 判斷鍊錶是否為空

bool empty_linklist(link_plist l)

// 向鍊錶i位置刪除資料data,成功返回true,失敗返回false

bool del_linklist(link_plist l, int i)

// 判斷是否為空

if (empty_linklist(l))

// 刪除i位置的資料data

for (j = 0, p = l; j < i; j++)

p = p->next;

q = p->next;

p->next = q->next;

free(q);

return true;

}// 遍歷

void show_linklist(link_plist l)

//josephu_mian.c

#include "linklist.h"

void create_josephu(link_plist h,int n);

void show_josephu(link_plist h);

link_plist josephu(link_plist h,int n);

int main(void)

void create_josephu(link_plist h,int n)

else

new->data = i+1;

// 將new指向的結點插入到單項迴圈煉表表尾

new->next = p->next;

p->next = new;

// 讓p指向表尾

p = p->next;

} show_josephu(h); }}

void show_josephu(link_plist h)

link_plist josephu(link_plist h, int n)

printf("\n");

return p;

}

單向迴圈鍊錶

單向迴圈鍊錶.cpp 定義控制台應用程式的入口點。include stdafx.h include include clinklist.h using namespace std int tmain int argc,tchar argv int n 5 測試空鍊錶 clinklistclist a...

迴圈單向鍊錶

typedef struct list list 初始化乙個迴圈單向鍊錶 void list init list head 判斷鍊錶是否為空 int is list empty list head 往迴圈單向鍊錶中插入乙個元素 prev 在prev元素後面插入 void list insert li...

單向鍊錶迴圈

include include include include includetypedef struct looplink looplink,plooplink 設定結點物件,包含兩個成員,nvalue和指向下乙個物件的指標pnext plooplink create phead nvalue 9...