單鏈表(帶頭結點)

2021-09-24 12:45:17 字數 2175 閱讀 1285

按照自己的想法和思路寫了一下帶頭結點的單鏈表,並進行了測試,畢竟自己能力有限,可能有的地方沒有測試到,還可能存在一些潛在的錯誤。

標頭檔案:

#include

using namespace std;

typedef struct node

node,*link;

typedef struct list

list,*linklist;

linklist newlist(void)

int listlength(list list)

bool isemptylist(list list)

void insertelemtohead(linklist list,int elem)

else

++list->length;

}

void insertelemtoend(linklist list,int elem)

else

++list->length;

}

void insertelemtolist(linklist list,int pos,int elem)

p->next=q->next;

q->next=p;

++list->length;

}

}

}

void deleteelemfromhead(linklist list,int &elem)

else

--list->length;

}

}

void deleteelemfromend(linklist list,int &elem)

else

--list->length;

}

}

void deleteelemfromlist(linklist list,int pos,int &elem)

p=q->next;

q->next=p->next;

elem=p->value;

free(p);

--list->length;

}

}

}

bool preelem(list list,int pos,int &elem)

elem=p->value;

return true;

}

}

}

bool nextelem(list list,int pos,int &elem)

elem=p->next->value;

return true;

}

}

}

bool currentelem(list list,int pos,int &elem)

elem=p->value;

return true;

}

}

}

bool gethead(list list,int &elem)

}

bool gettail(list list,int &elem)

}

void clearlist(linklist list)

free(p);//釋放尾結點

list->length=0;

}

}

void destroylist(linklist list)

void vistelemoflist(list list)

}

cout《測試**:

#include "stdafx.h"

#include

#include "list.h"

int _tmain(int argc, _tchar* ar**)

{

linklist list;

list=newlist();

if(isemptylist(*list))

cout<<"the list is empty."

單鏈表 帶頭結點

typedef struct lnodelnode,linklist 頭插法 linklist list headinsert linklist l returnl 尾插法 linklist list tailinsert linklist l r next null 尾結點指標置空 returnl...

單鏈表(帶頭結點)的刪除

1.問題描述 給出初始資料,實現單鏈表的定義 建立 查詢和刪除。假設單鏈表中的結點計數從1開始。2.演算法 單鏈表的刪除 給出位置i,刪除第i個結點 1 i l 要求定義刪除函式 int deletelist node h,int i 刪除第i個結點成功,返回1 第i個結點不存在,刪除不成功,返回0...

資料結構 單鏈表(帶頭結點)

單鏈表是一種鏈式訪問的資料結構,用一組位址任意的儲存單元存放線性表中的資料元素。鍊錶中的資料是以結點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。簡單講就是邏輯相鄰,物理不相鄰 帶頭結點 list.h prag...