按照自己的想法和思路寫了一下帶頭結點的單鏈表,並進行了測試,畢竟自己能力有限,可能有的地方沒有測試到,還可能存在一些潛在的錯誤。
標頭檔案:
#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...