單鏈表操作(帶頭節點)

2022-09-06 22:12:23 字數 2394 閱讀 2401

//帶頭節點的單鏈表 

#include #include typedef struct lnodenode , *linklist;

bool initlist(linklist &); //初始化單鏈表

bool listinsert(linklist & , int , int); //在指定位置插入資料

bool empty(linklist); //判斷鍊錶是否為空

bool hlistinsert(linklist & , int , int); //在指定節點前面插入資料

bool rlistinsert(linklist * , int , int); //在指定節點後面插入資料

void output(linklist); //輸出鍊錶

bool listdelete(linklist & , int , int &); //刪除指定位置的資料

bool headinsert(linklist , int); //頭插法

node* getelem(linklist , int); //查詢指定位置的值

int locateelem(linklist , int); //查詢指定的值在哪個位置

int main(void)else

return 0;

} //初始化單鏈表

bool initlist(linklist &l)

l->next = null;

return true;

} //遍歷單鏈表

void output(linklist l)

} //判斷單鏈表是否為空

bool empty(linklist l)else

} //在指定的位置插入資料

bool listinsert(linklist &l ,int i , int e)

node *p = l;

int j = 0;

while(p != null && j < i-1)

if(p == null)

node *s = (node*)malloc(sizeof(node));

s->data = e;

s->next = p->next;

p->next = s;

return true;

} //在指定節點前面插入資料

bool hlistinsert(linklist &l , int i , int e)

node *p = l;

int j = 0;

while(p != null && j < i)

if(p == null)

node *s = (node *)malloc(sizeof(node));

s->data = p->data;

p->data = e;

s->next = p->next;

p->next = s;

return true;

} //在指定節點後面插入資料

bool rlistinsert(linklist *l , int i , int e)

node *p = *l;

int j = 0;

while(p != null && j < i)

if(p == null)

node *s = (node *)malloc(sizeof(node));

s->next = p->next;

p->next = s;

s->data = e;

}//刪除指定位置的資料

bool listdelete(linklist &l , int i , int &e)

node *p = l;

int j = 0;

while(p != null && j < i-1)

if(p == null || p->next == null)

node *q = p->next;

e = q->data;

p->next = q->next;

free(q);

return true;

} //頭插法

bool headinsert(linklist l , int e)

//查詢指定位置的值

node* getelem(linklist l , int i)

node *p = l;

int j = 0;

while(p != null && j < i)

return p;

}//查詢指定的值在哪個位置

int locateelem(linklist l , int e)

if(p == null)else

}

帶頭節點單鏈表的操作

我們來看單鏈表的銷毀,排序,逆置 首先還是來看一下單鏈表的銷毀 我們能不能將單鏈表的操作像順序表一樣直接將他的size變成0然後直接釋放掉指向他的空間?void listdestory slist psl 我們知道鍊錶儲存資料最大的不同就是不是一段連續的空間,如果釋放鍊錶空間,需要釋放每乙個節點的空...

單鏈表的操作(帶頭節點)

typedef struct lnodelnode,linklist 鍊錶的各種具體操作函式 bool initlist linklist l 鍊錶的初始化 bool empty linklist l 判斷鍊錶是否為空 intlength linklist l 求單鏈表的長度 bool listin...

帶頭節點的單鏈表

需要注意 include define maxlen 20 define elementtype char using namespace std typedef struct slnode node 函式宣告 void initiallist node l int listlength node ...