單鏈表的基本操作

2021-10-24 15:36:20 字數 2845 閱讀 4303

標頭檔案:

#include

#include

定義

typedef

struct lnode

lnode,

*linklist;

初始化單鏈表

bool initlist

(linklist &l)

bool listempty

(linklist l)

單鏈表判空

bool listempty

(linklist l)

構造單鏈表—頭插法,逆序建表

void

createlist_head

(linklist &l,

int n)

//頭插法,逆序建表

}

構造單鏈表—尾插法,正序建表

void

createlist_tail

(linklist &l,

int n)

//尾插法,正序建表

r->next =

null

;}

單鏈表中插入元素

bool listinsert

(linklist &l,

int i,

int e)if(

!p || j > i -1)

//屬於什麼情況---i小於1或者大於表長加一

return false;

s =(linklist)

malloc

(sizeof

(lnode));

s->data = e;

s->next = p ->next;

p->next = s;

return true;

}

單鏈表中刪除元素

bool listdelete

(linklist &l,

int i,

int&e)if(

!(p->next)

|| j > i -1)

return false;

//刪除位置不合理

q = p->next;

p->next = q->next;

e = q->data;

free

(q);

return true;

}

求單鏈表的長度

int

listlength

(linklist l)

return length;

}

單鏈表按序查詢

bool getelem

(linklist l,

int i,

int&e)if(

!p || j > i)

return false;

e = p->data;

return true;

}

單鏈表按值查詢

bool getelem_value

(linklist l,

int e,

int&pos)

//按值查詢

if(p ==

null

)return false;

}

找出指定元素的前驅

若cur_e是l 的資料元素,且不是第乙個,則用pre_e返回它的前驅,否則操作失敗,pre_e無意義

bool priorelem

(linklist l,

int cur_e,

int&pre_e)

while

(p && p->data != cur_e)

if(p)

else

return false;

//cur_e不是l 的資料元素

}

找出指定元素的後繼

若cur_e是l 的資料元素,且不是最後乙個,則用nxt_e返回它的後繼,否則操作失敗,nxt_e無意義

bool nextelem

(linklist l,

int cur_e,

int&nxt_e)

p=q;

}return false;

}

輸出單鏈表

void

print

(linklist l)

}

清空單鏈表

void

clearlist

(linklist &l)

l->next =

null

;}

銷毀單鏈表

void

destroylist

(linklist &l)

}

單鏈表基本操作

include include include include includeusing namespace std typedef struct node node,plinklist plinklist createfromhead node pstnode node malloc sizeof...

單鏈表基本操作

單鏈表的初始化,建立,插入,查詢,刪除。author wang yong date 2010.8.19 include include typedef int elemtype 定義結點型別 typedef struct node node,linkedlist 單鏈表的初始化 linkedlist...

單鏈表基本操作

include using namespace std define namelenth 20 define ok 0 define error 1 typedef struct flagnode node 生成結點 inline node newnode 銷毀化煉表 void destroylin...