單鏈表ADT實現

2021-08-30 06:47:38 字數 2659 閱讀 7710

目錄

單鏈表的定義:

單鏈表的實現:

鍊錶使用:

linkedlist.h檔案

#ifndef linkedlist_h_

#define linkedlist_h_

#include #define ok 1

#define error 0

typedef int elemtype;

typedef int status;

typedef struct lnode

lnode, *linklist;//定義結點和鍊錶

status creatlklist(linklist &l, int n); //前插法建立n個元素的鍊錶

status insertlklist(linklist &l, int i, elemtype e);//在第i個位置插入元素e

status deletelklist(linklist &l, int i); //刪除第i個元素

status deletelklist(linklist &l, elemtype mmin, elemtype mmax);//刪除區間(mmin,mmax)的元素

status destorylklist(linklist &l); //銷毀鍊錶

int findorinsert(linklist &l, elemtype x); //查詢元素返回位序沒有將其插入合適位置

lnode* reverselist(linklist &l, int flag); //遞迴反轉鍊錶

std::ostream& operator<

#endif // !linkedlist

linkedlist.cpp檔案

#include "linkedlist.h"

using namespace std;

status creatlklist(linklist & l, int n)//前插法建立,順序與輸入順序相反

cout << "the linklist as follow:\n";

cout << "l->";

lnode * t = l->next;

while (t)

cout << "null";

return ok;

}status insertlklist(linklist & l, int i, elemtype e)

if (!p || j > i - 1)//i>l.length或i<1

return error;

lnode* t = new lnode;//建立新結點

t->data = e;

t->next = p->next;

p->next = t;//插入到第i-1個後面

return ok;

}status deletelklist(linklist & l, int i)

if (!p->next || j > i - 1)//i>l.length+1或i<1

lnode* t = p->next;//臨時儲存被刪結點

p->next = t->next;

delete t;

return ok;

}status deletelklist(linklist & l, elemtype mmin, elemtype mmax)

else

} return ok;

}status destorylklist(linklist & l)

cout << "\nthe linklist is destoryed!\n";

return ok;

}int findorinsert(linklist & l, elemtype x)

lnode *t = new lnode;

t->data = x;

t->next = now;

pre->next = t;

cout << "未找到 " << x << " 將其插入成功!\n";

return 0;//失敗返回位序0

}lnode * reverselist(linklist & l, int flag)//flag當前是否指向頭結點標籤

else

else//指向l指向首元結點到倒數第3個結點

return tair; }}

ostream & operator<

cout << "l->";

while (p)

os << "null";

return os;

}

uselist.cpp使用

#include "linkedlist.h"

using namespace std;

void init(linklist &l);

int main()

void init(linklist &l)

測試結果:

ADT 單鏈表

include define true 1 define false 0 define ok 1 define error 0 define overflow 1 using namespace std typedef int elemtype typedef int status typedef ...

單鏈表實現

單鏈表 1 邏輯上連續,位置上可以不連續的儲存方式。2 單鏈表由無數個結點組成,每個結點由資料段和指標域組成,資料段儲存資料,指標域儲存後繼的位址。3 每個結點最多有乙個前繼和乙個後繼。4 其中第乙個結點沒有前繼,所以我們通常建立乙個頭結點來儲存他的位置,其中頭結點的資料段我們不關注。5 最後乙個結...

單鏈表實現

include include define max 50 struct lnode 求鍊錶的長度 不包含頭結點 int length struct lnode node return i 初始化頭 int inithead struct lnode p struct lnode insert st...