LinkList的具體實現

2021-08-28 11:34:14 字數 2513 閱讀 2722

#include#includeusing namespace std;

#define list_init_size 100

#define listincrement 10

#define true 1

#define false 0

#define ok 1

#define error 0

#define infeasible -1

#define overflow -2

typedef int elemtype;

typedef int status;

typedef struct lnode

lnode ,*linklist;

/*typedef structlinklist;*/

//構造乙個空的線性表l

status initlist_l(linklist& l)

//銷毀線性表l

status destroylist_l(linklist& l)

return ok;

}//將線性表l置為空表

status clearlist_l(linklist& l)

l->next = null;

return ok;

}//判斷線性表l是否為空表

status listempty_l(linklist l)

//返回線性表l中資料元素的個數

int listlength_l(linklist l)

//用元素e返回線性表l中第i個資料元素的值

status getelem_l(linklist l, int i, elemtype& e)

if(!p||j>i) return error;

e=p->data;

return ok;

}//資料元素之間的關係函式,例如數學關係:a=b

status compare(elemtype a, elemtype b)

//返回線性表l中第乙個與元素e滿足compare()關係的資料元素的位序;若不存在,返回0

status locateelem_l(linklist l, elemtype e, status(*compare)(elemtype, elemtype))

if(!p) return 0;

return i;

}//若cur_e是線性表中l中的資料元素,且不是第乙個,則用pre_e返回它的前驅,否則操作失敗,pre_e無定義

status priorelem_l(linklist l,elemtype cur_e,elemtype& pre_e)

p=q;

}return infeasible;

}//若cur_e是線性表l中的資料元素並且不是最後乙個,則用next_e返回它的後繼,否則操作無效,next無定義

status nextelem_l(linklist l,elemtype cur_e,elemtype& next_e)

p=q;}}

return infeasible;

}status listinsert_l(linklist& l,int i,elemtype e)

if(!p||j>i-1) return error;

linklist s=(linklist)malloc(sizeof(lnode));

s->data=e; s->next=p->next;p->next=s;

return ok;

}//刪除線性表l中的第i個元素。並用元素e返回其值,表l的長度減一

status listdelete_l(linklist& l,int i,elemtype e)

if(!p||jnext; p->next=q->next;e=q->data; free(q);

return ok;

}//訪問線性表中的資料元素

status visit(elemtype i)

return ok;

}int main(void)

else

cout << "刪除失敗!" << endl;

cout << "值為7的資料元素的位置在:";

cout <<"第"<< locateelem_l(l, 7, compare)

if (listempty_l(l))

cout << "是" << endl;

else

cout << "否" << endl;

cout << "現將線性表l置為空表:" << endl;

clearlist_l(l);

cout << "線性表l是否為空表:";

if (listempty_l(l))

cout << "是" << endl;

else

cout << "否" << endl;

cout << "將線性表l銷毀!" << endl;

destroylist_l(l);

}-----+----------------

LinkList單鏈表實現

1.封裝node實體類 package data table.syn.com.common.util 簡單封裝node節點 author administrator public class node public void setvalue object value public node get...

C 模板類實現LinkList

linklist.件 pragma once include 在插入元素時,應該把每乙個元素都儲存下來 模板類中應該能分配節點,快取節點 template struct node template class linklist linklist.cpp檔案 include linklist.h te...

LinkList的乙個簡單實現

鏈式線性表是資料結構裡很簡單但也是很常見的資料結構,相比順序儲存的線性表,可以更快的實現新增和刪除操作,但讀取速度比順序結構會慢。鏈式線性表的關鍵在於,每個資料儲存為節點形式。不僅僅儲存有資料,還有乙個引用 next 指向下乙個節點。鏈式結構還可以再擴充套件為雙向鍊錶 迴圈鍊錶等等。基本原理一樣,只...