迴圈鍊錶 迴圈雙鏈表 迴圈單鏈表

2022-09-12 18:45:16 字數 1785 閱讀 7319

迴圈單/雙鏈表,建立、初始化、尾插、頭插、遍歷、插入、刪除、判空

部分函式採用過載(此處為c++**)

#include #include #include using namespace std;

typedef struct lnodelnode,*linklist;

typedef struct dnodednode,*dlinklist;

bool initlinklist(dlinklist &l) //雙鏈表初始化(過載)

bool initlinklist(linklist &l) //單鏈表初始化(過載)

bool empty(dlinklist l) //雙向鍊錶判空(過載)

bool empty(linklist l) //單項鍊表判空(過載)

dlinklist dlinklist_tailinsert(dlinklist &l) //雙向鍊錶尾插

return l;

}linklist linklist_tailinsert(linklist &l) //單鏈表尾插

return l;

}linklist linklist_handinsert(linklist &l) //單鏈表頭插

return l;

}bool deletelem(linklist &l,int i,int &e) //單鏈表刪除元素(過載)

if(j>i)

return false;

q=p->next;

e=q->data;

p->next=q->next;

free(q);

return true;

}bool deletelem(dlinklist &l,int i,int &e) //雙向鍊錶刪除元素(過載)

if(j>i)

return false;

q=p->next;

p->next=q->next;

q->next->prior=p;

e=q->data;

free(q);

return true;

}bool insertelem(linklist &l,int i,int x) //單鏈表插入(過載)

if(j>i)

return false;

q=(lnode *)malloc(sizeof(lnode));

q->data=x;

q->next=p->next;

p->next=q;

return true;

}bool insertelem(dlinklist &l,int i,int x) //雙向鍊錶插入(過載)

if(j>i)

return false;

q=(dnode *)malloc(sizeof(dnode));

q->data=x;

q->next=p->next;

p->next->prior=q;

p->next=q;

q->prior=p;

return true;

}void looklinklist(dlinklist l) //雙向鍊錶遍歷(過載)

coutwhile(p!=l)

coutwhile(idata<<" , ";

p=p->next;

i++;

}cout<}int main()

單鏈表 雙鏈表 迴圈鍊錶總結

1.單鏈表 為公升序鍊錶,value按公升序排列 include include typedef struct node node 最好放在標頭檔案中 node sll creat int sll length node p node sll del node head,int value void...

雙鏈表 迴圈鍊錶

一 雙鏈表 對於雙鏈表,採用類似於單鏈表的型別定義,其dlinklist型別的定義如下 typedef struct dnode 宣告雙鏈表節點型別 dlinklist 1.建立雙聯表 1 頭插法 void createlistf dlinklist l,elemtype a,int n 頭插法建立...

迴圈鍊錶和雙鏈表

1 假設在長度大於1的單迴圈鍊錶中,既無頭結點也無頭指標。s為指向某個結點的指標,試編寫演算法刪除結點 s的直接前驅結點。2 已知由單鏈表表示的線性表中,含有三類字元的資料元素 如 字母 數字和其它字元 設計演算法構造三個以迴圈鏈表示的線性表,使每乙個表中只含同一類的字元,且利用原表中的結點空間作為...