typedef
struct lnodelnode,
*linklist;
鍊錶的各種具體操作函式
bool initlist
(linklist& l)
//鍊錶的初始化
bool empty
(linklist& l)
//判斷鍊錶是否為空
intlength
(linklist& l)
//求單鏈表的長度
bool listinsert
(linklist& l,
int i,
int e)
bool empty
(linklist& l)
return0;
}int
length
(linklist& l)
return length;
}bool listinsert
(linklist& l,
int i,
int e)
lnode* s =
(lnode*
)malloc
(sizeof
(lnode));
//生成乙個新節點
lnode* p = l;
int t =0;
while
(p !=
null
&& t < i -1)
if(p ==
null
) s->data = e;
s->next = p->next;
p->next = s;
return1;
//插入成功
}bool insertnextnode
(lnode* p,
int e)
lnode* s =
(lnode*
)malloc
(sizeof
(lnode));
//生成乙個新的待插入的節點
s->data = e;
s->next = p->next;
p->next = s;
return1;
}bool insertpriornode
(linklist l,lnode* p,
int e)
lnode* q = l;
while
(q->next != p)
lnode* s =
(lnode*
)malloc
(sizeof
(lnode));
//生成乙個新的待插入的節點
s->data = e;
s->next = q->next;
q->next = s;
return1;
}bool listdelete
(linklist& l,
int i,
int& e)
int t =0;
lnode* p = l;
lnode* q = l;
while
(p !=
null
&& t < i -1)
if(p ==
null)if
(p->next ==
null
) q = p->next;
e = q->data;
p->next =q->next;
free
(q);
return1;
}bool deletenode
(linklist& l,lnode* p)
lnode* q = l;
while
(q!=
null
&&q->next !=p)
if(q ==
null
) q->next = p->next;
free
(p);
return1;
}lnode*
getelem
(linklist l,
int i)
int t =0;
lnode* p = l;
while
(p !=
null
&& t < i)
return p;
}lnode*
locateelem
(linklist l,
int e)
return p;
}linklist list_tailinsert
(linklist& l)
return l;
}linklist list_headinsert
(linklist& l)
return l;
}
單鏈表操作(帶頭節點)
帶頭節點的單鏈表 include include typedef struct lnodenode linklist bool initlist linklist 初始化單鏈表 bool listinsert linklist int int 在指定位置插入資料 bool empty linklis...
帶頭節點單鏈表的操作
我們來看單鏈表的銷毀,排序,逆置 首先還是來看一下單鏈表的銷毀 我們能不能將單鏈表的操作像順序表一樣直接將他的size變成0然後直接釋放掉指向他的空間?void listdestory slist psl 我們知道鍊錶儲存資料最大的不同就是不是一段連續的空間,如果釋放鍊錶空間,需要釋放每乙個節點的空...
帶頭節點的單鏈表
需要注意 include define maxlen 20 define elementtype char using namespace std typedef struct slnode node 函式宣告 void initiallist node l int listlength node ...