資料結構定義
common.h
#ifndef __hi_comm_h__
#define __hi_comm_h__
#include #include #include #include #define list_init_size 100 /*線性表儲存空間的初始分配量;*/
#define list_increment 10 /*線性表儲存空間的分配增量;*/
#define elemtype int
//#define null (void*)0
/*線性表的順序儲存結構*/
typedef structsqlist;
/*線性表的鏈式儲存結構*/
typedef struct franklnode
lnode; //
/*棧的順序儲存結構*/
typedef struct
fstack;
#define stack_init_size 100 /*棧儲存空間的初始分配量;*/
#define stack_increment 10 /*棧儲存空間的分配增量;*/
/*佇列的順序儲存結構*/
typedef struct frankqnode
qnode;
typedef struct frankqueueheader
queueheader;
/*二叉樹的儲存結構*/
typedef struct frankbintreenode
bintreenode;
typedef bintreenode* pbintreenode;
#endif
資料結構標頭檔案
nodelist.h
#pragma once
#include "common.h"
class nodelist
;
資料結構演算法的實現nodelist.cpp
#include "nodelist.h"
nodelist::nodelist(void)
nodelist::~nodelist(void)
int nodelist::initlist(lnode **l)
int nodelist::destroylist(lnode **l)
int nodelist::clearlist(lnode **l)
*l = null;
return 0;
}bool nodelist::islistempty(lnode *l)
else }
int nodelist::getlistlength(lnode *l)
int i = 0;
while (l != null)
return i;
}elemtype nodelist::getelem(lnode *l,int index)
int i = 0;
while (l != null)
if (l!=null)
else }
//從列表中找到某一元素的位置
elemtype* nodelist::locateelem(lnode *l,elemtype q)
return null;
}lnode* nodelist::listinsert(lnode **l, int index ,elemtype e)
lnode* pc = *l;
lnode* pn ;
lnode* inser = (lnode*)malloc(sizeof(lnode));
inser->data = e;
int i = 0;
while(pc != null)
pc = pn;
}}void nodelist::listdelete(lnode **l,int index ,elemtype &e)
lnode* pc = *l;
int i =0;
while (pc != null)
pc = pc->next;
i++; }}
void nodelist::changeelem(lnode **l,int index ,elemtype e)
int i = 0;
lnode * pc = *l;
while (pc != null)
pc = pc->next;
i++;
} if (index > i)
}void nodelist::printsqlist(lnode *l)
int i = 0;
while (l != null)
printf("\n");
}void nodelist::listadd(lnode **l, elemtype e)
else
np->next = newp;
}}
測試**
void test_nodelist()
nodelist.printsqlist(l);
int len = nodelist.getlistlength(l);
nodelist.listinsert(&l, 3 ,1111);
elemtype e;
nodelist.listdelete(&l,7,e);
nodelist.changeelem(&l,9 ,212121);
nodelist.printsqlist(l);
}
資料結構 鏈式儲存線性表
鏈式儲存結構的線性表 簡稱為鍊錶 將採用一組位址任意的儲存單元存放線性表中的資料元素,鏈式結構的線性表不會按線性的邏輯順序來儲存資料元素,它需要在每乙個資料元素裡儲存乙個引用下乙個資料元素的引用。優點 插入 刪除元素快,充分利用計算機記憶體空間 缺點 查詢元素需要整體遍歷,空間開銷大 單鏈表 cre...
資料結構之線性表 鏈式儲存結構
鍊錶中的第乙個結點,包含指向第乙個資料元素的指標以及鍊錶自身的一些資訊,表頭節點不是資料元素。鍊錶中代表資料元素的結點,包含指向下乙個資料元素的指標和資料元素的資訊。鍊錶中的最後乙個資料結點,其下一元素指標為空,表示無後繼 煉表頭檔案 linklist.h ifndef linklist h def...
線性表之鏈式儲存結構
下面 為單鏈表的一些基本操作 include using namespace std typedef int elemtype typedef struct lnode linklist 逆序建立鍊錶 linklist recreatelinklist linklist l cout l n cha...