/*
專案名稱:雙向迴圈鍊錶的建立與基本操作
編譯環境: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 建立雙向迴圈鍊錶 ...