#include
#include
using
namespace std;
class
node};
class
link
~link()
void
initiate()
;//初始化
void
deleteall()
;//刪除所有節點
void
headcreate
(int n)
;//頭插法建表
void
trailcreate
(int n)
;//尾插法建表
void
headcreatewithhead
(int n)
;//建立帶表頭的鍊錶(從頭)
void
trailcreatewithtrail
(int n)
;//建立帶表頭的鍊錶(從尾)
intlength()
;//鍊錶長度
node *
locatex
(string data)
;//查詢值為x的資料元素
node *
locatei
(int i )
;//取第i個元素值
bool
insert
(string data,
int i)
;//在鍊錶第i個元素之前插入x
bool
deleted
(int i)
;//刪除鍊錶中第i個結點
void
print()
;//列印鍊錶
string get
(int i)
;//讀取第i個位置上的元素值
void
reverse
(link &h)
;//單鏈表的倒置
void
merge
(link &a,link &b,link &c)
else
s->next=c.head-
>next;
c.head-
>next=s;
}//插入c表的頭部,即頭插法
if(p==
null
)while
(p!=
null
)//將pq剩餘的結點插入到c
a.head=
null
; b.head=
null
;//將鍊錶ab的head指標置為空
//歸併的複雜度為o(m+n)}}
void link::
initiate()
void link::
headcreate
(int n)
head = p;
// 最後生成鍊錶的頭結點是最後生成的新結點
}void link::
trailcreate
(int n)
} head = p;
}//沒有頭結點的話空表和非空表的操作會有差異,因此加入頭結點可以將操作統一
void link::
headcreatewithhead
(int n)
head = p;
}void link::
trailcreatewithtrail
(int n)
//帶頭結點的尾插法就是只移動尾指標
r->next =
null
;//隊尾指標下乙個指向為空
head = p;
}int link::
length()
return
--len;
}//查詢操作
node * link::
locatei
(int i)
node *p = head -
>next;
while
((p!=
null)&&
(j)//推進指標
if(j==i)
return p;
else
}// 按值查詢即定位
node *link::
locatex
(string data)
else
}string link::
get(
int i)if(
(p==
null)||
(j>i)
)else
return p-
>data;
}//插入結點,(前插結點)
bool link::
insert
(string data,
int i)
s =newnode()
; s-
>data = data;
s->next = p-
>next;
p->next = s;
return
true;}
bool link::
deleted
(int i)
q= p-
>next;
if(q!=
null
)else
}void link::
print()
cout << endl;
}void link::
deleteall()
head =
null;}
void link::
reverse
(link &h)
}int
main()
c 鍊錶類的實現
include define null 0 class node 節點類 node int n node int n,node p void setnum int n void setnext node p int getnum node getnext private int num node n...
c 鍊錶類的實現
void initlist 初始化 void creatlist elemtype a,int n 建立 void destroylist 銷毀 bool listempty 是否為空 intlistlength 長度 bool displaylist 全部輸出 bool getelem elemt...
C 模板類實現鍊錶
注意 鍊錶中要包含node的結構體,用來把節點放進去 只有出現node就要加,不然會報錯 有類模板的重新編譯記得清空再重新生成 清除鍊錶時使用的迴圈清空頭結點的思想需要記得 c語言中一樣迴圈呼叫清除0號元素也可以 debug和release編譯不同,一步一步執行時順序不一樣,不知道為啥了,不過不重要...