雙向迴圈鍊錶的建立及操作

2021-09-24 14:25:24 字數 2651 閱讀 9106

/*

專案名稱:雙向迴圈鍊錶的建立與基本操作

編譯環境:vc++ 2008

作者相關:。。。

最後修改:2019.6.19

學習目標:判空、求長、獲取元素位置、返回某個位置的元素、插入元素、刪除元素、清空鍊錶、銷毀鍊錶

注意事項:1.測試所有功能是否正常

*/#include #include #define ok 1

#define error 0

#define true true

#define false false

typedef int elemtype;

typedef bool status;

typedef struct dulnodedulnode,*dulinklist;

status create_dulnode(dulinklist *l);

status init_dul(dulinklist *l);

status empty_dul(dulinklist l);

int length_dul(dulinklist l);

status insert_dul(dulinklist *l,int i,elemtype e);

status getelem_dul(dulinklist l,int i,elemtype *e);

int locate_dul(dulinklist l,elemtype e);

status delete_dul(dulinklist *l,int i,elemtype *e);

status clear_dul(dulinklist *l);

status destroy_dul(dulinklist *l);

void out_list(dulinklist l);

int main()

out_list(l1);

getelem_dul(l1,4,&e);

printf("第4個元素是: %d \n\n",e);

int k = locate_dul(l1,7);

printf("元素7的位置是: %d\n\n",k);

delete_dul(&l1,3,&e);

printf("刪除的第3個元素為: %d\n\n",e);

out_list(l1);

if(clear_dul(&l1))

printf("雙向迴圈鍊錶已清空!\n\n");

if(empty_dul(l1))

printf("雙向迴圈鍊錶為空!\n\n");

else

printf("雙向迴圈鍊錶非空!\n\n");

if(destroy_dul(&l1))

printf("雙向迴圈鍊錶已被銷毀!\n\n");

return 0;

}status create_dulnode(dulinklist *l)

status init_dul(dulinklist *l)

}status empty_dul(dulinklist l)

int length_dul(dulinklist l)

return length;

}status insert_dul(dulinklist *l,int i,elemtype e)

dulinklist p = *l;//*l與p是同型別的指標,進行的是賦值操作,相當於p引用*l

dulinklist s;

int j = 1;

while(jnext;

++j;

} if(create_dulnode(&s))//建立結點成功

else//建立結點失敗

return error;

return ok;

}//e返回鍊錶中第i個資料元素的值

status getelem_dul(dulinklist l,int i,elemtype *e)

*e = p->data;

return ok;

}//獲取元素的位置

int locate_dul(dulinklist l,elemtype e)

} return k;

}//刪除第i個元素的位置

status delete_dul(dulinklist *l,int i,elemtype *e)

dulinklist p = *l;//相當於p引用*l

(四)迴圈鍊錶及雙向鍊錶

約瑟夫問題 迴圈鍊錶的特點 判斷單鏈表中是否有環 例題雙向鍊錶 對於單鏈表,由於每個結點只儲存了向後的指標,到了尾部標識就停止了向後鏈的操作。也就是說,按照這樣的方式,只能索引後繼節點,不能索引前驅節點。不從頭結點出發就無法訪問到全部節點,故有了迴圈鍊錶 鍊錶儲存結構定義 typedef struc...

迴圈雙向鍊錶的建立方法 最簡單的迴圈雙向鍊錶

首先講迴圈鍊錶,簡單來說就是讓鍊錶首尾相連,形成乙個環,因為一般的鍊錶都是單向的,任意給出的乙個節點是不能訪問前面的鏈節,這就導致了單向鍊錶的侷限性,迴圈鍊錶從一定程度上來說就解決了這一問題,通過表頭指標的移動,因為環的特性,可以訪問完整個鍊錶 但是我們不禁會想,如果只是為了訪問已知鏈節的前乙個節點...

雙向迴圈鍊錶基本操作

include include include typedef struct node linklist void clear 清屏 linklist init doublelinklist 初始化雙向迴圈鍊錶 void creat doublelinklist linklist 建立雙向迴圈鍊錶 ...