資料結構 雙向迴圈鍊錶 無頭結點 相關操作

2021-06-29 07:06:33 字數 2140 閱讀 6949

#include #include #define overflow -2

#define ok 1

#define error 0

//雙向迴圈鍊錶結構體定義(無頭結點)

typedef int elemtype;

typedef struct dulnode dulnode,*dullinklist;

dullinklist initlist_dul(dullinklist l);//初始化乙個雙向迴圈鍊錶

dullinklist createelemp_dul(dullinklist l);//建立乙個雙向迴圈鍊錶

void printlist_dul(dullinklist l);//輸出該雙向迴圈鍊錶

int getelemp1_dul(dullinklist l,int i,elemtype *e);//取得雙向迴圈鍊錶上第i個位置上的元素的值

dullinklist listinsert_dul(dullinklist l,int i,elemtype e);//向該雙向迴圈鍊錶的第i個位置之前插入元素。

int listlength_dul(dullinklist l);//返回雙向迴圈鍊錶的長度

dullinklist getelemp2_dul(dullinklist l,int i);//返回雙向迴圈鍊錶上第i個位置上的指標

dullinklist listdelete_dul(dullinklist l,int i,elemtype *e);//刪除雙向迴圈鍊錶上第i個位置的元素,並返回該元素的值

int getlocate_dul(dullinklist l,elemtype e);//返回雙向迴圈鍊錶上元素e的位序

//初始化乙個雙向迴圈鍊錶

dullinklist initlist_dul(dullinklist l) else

return l;

}//建立乙個雙向迴圈鍊錶

dullinklist createelemp_dul(dullinklist l)

return l;

}//輸出該雙向迴圈鍊錶

void printlist_dul(dullinklist l)

printf("\n");

}//返回雙向迴圈鍊錶的長度

int listlength_dul(dullinklist l)

return i;

}//取得雙向迴圈鍊錶上第i個位置上的元素的值

int getelemp1_dul(dullinklist l,int i,elemtype *e)

if(!p || j>i) return error;

*e = p->data;

return ok;

}//返回雙向迴圈鍊錶上第i個位置上的指標

dullinklist getelemp2_dul(dullinklist l,int i)

if(!p || j>i) return error;

return p;

}//向該雙向迴圈鍊錶的第i個位置之前插入元素e

dullinklist listinsert_dul(dullinklist l,int i,elemtype e)

if(!(s = (dullinklist)malloc(sizeof(dulnode))))

s->data = e;

s->prior = p->prior;

p->prior->next = s;

s->next = p;

p->prior = s;

return l;

}//刪除雙向迴圈鍊錶上第i個位置的元素,並返回該元素的值

dullinklist listdelete_dul(dullinklist l,int i,elemtype *e)

*e = p->data;

p->prior->next = p->next;

p->next->prior = p->prior;

return l;

}//返回雙向迴圈鍊錶上元素e的位序

int getlocate_dul(dullinklist l,elemtype e)

return j;

}//主函式

int main()

資料結構 雙向迴圈帶頭結點鍊錶

前面我們寫過了不帶頭結點的單鏈表,由於沒有頭結點,在對單鏈表進行頭插 刪的時候需要傳入二級指標 在需要進行尾插 刪的時候,需要先根據頭指標找到頭結點,然後從頭往後遍歷找到最後乙個結點再進行相應操作。而我們今天要寫的雙向迴圈帶頭結點鍊錶,相對於不帶頭結點的單鏈表做增刪時,將會方便許多。typedef ...

無頭結點鍊錶

include include linklist.h struct node create linklist creat linklist 根據使用者輸入,建立乙個單鏈表 struct node pnew struct node malloc sizeof struct node pnew data...

無頭雙向鍊錶

class node public class mylinkedlist else 尾插法 public void addlast int data else private void checkindex int index private node searchindex int index r...