資料結構 線性表之鏈式儲存結構

2021-07-03 11:02:14 字數 2847 閱讀 7326

資料結構定義

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...