迴圈單/雙鏈表,建立、初始化、尾插、頭插、遍歷、插入、刪除、判空
部分函式採用過載(此處為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 已知由單鏈表表示的線性表中,含有三類字元的資料元素 如 字母 數字和其它字元 設計演算法構造三個以迴圈鏈表示的線性表,使每乙個表中只含同一類的字元,且利用原表中的結點空間作為...