#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); }-----+---------------- 1.封裝node實體類 package data table.syn.com.common.util 簡單封裝node節點 author administrator public class node public void setvalue object value public node get... linklist.件 pragma once include 在插入元素時,應該把每乙個元素都儲存下來 模板類中應該能分配節點,快取節點 template struct node template class linklist linklist.cpp檔案 include linklist.h te... 鏈式線性表是資料結構裡很簡單但也是很常見的資料結構,相比順序儲存的線性表,可以更快的實現新增和刪除操作,但讀取速度比順序結構會慢。鏈式線性表的關鍵在於,每個資料儲存為節點形式。不僅僅儲存有資料,還有乙個引用 next 指向下乙個節點。鏈式結構還可以再擴充套件為雙向鍊錶 迴圈鍊錶等等。基本原理一樣,只...LinkList單鏈表實現
C 模板類實現LinkList
LinkList的乙個簡單實現