目錄
單鏈表的定義:
單鏈表的實現:
鍊錶使用:
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...