資料結構 2 線性表的鏈式表示和實現

2021-07-10 12:42:09 字數 1579 閱讀 7226

// 線性表的鏈式表示和實現

#include

#define ok 1

#define error 0

#define overflow -

2#define maxsize 100

// status是函式返回值型別,其值是函式結果狀態**

typedef int status;

// elemtype是自定義資料型別

typedef int elemtype;

// 迴圈變數

int i,j;

using namespace std;

// 單鏈表的儲存結構

typedef struct lnode

lnode,*linklist; // linklist為指向結構體lnode的指標型別

// 單鏈表的初始化

status initlist(linklist &l)

// 單鏈表的取值

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

if(!p || j>i) return error; // i值不合法i>n 或 i<=0

e = p->

data; // 取第i個結點的資料域

return ok;

}// 單鏈表的按值查詢

lnode *locateelem(linklist l,elemtype e)

// 單鏈表的插入

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

if(!p || j>i-

1) return error; // i>n+1或者i<1

s =new lnode; // 生成新結點*s

s->

data

= e; // 將結點*s的資料域置為e

s->next = p->next; // 將節點*s的指標域指向結點ai

p->next = s; // 將節點*p的指標域指向結點*s

return ok;

}// 單鏈表的刪除

status listdelete(linklist &l,int i)

if(!p || j>i-

1) return error;// 當i>n 或 i<1時,刪除位置不合理

q = p->next; // 臨時儲存被刪除結點的位址以備釋放

p->next = q->next; // 改變刪除結點前驅結點的指標域

delete q; // 釋放刪除結點的空間

return ok;

}// 前插法建立單鏈表(o(n))

void createlist_h(linklist &l,int n)

}// 後插法建立單鏈表(o(n))

void createlist_r(linklist &l,int n)

}int main()

資料結構 線性表 線性表的靜態鏈式表示

資料結構 線性表的靜態鏈式表示 單鏈表 靜態鍊錶 線性表元素序號從1算起 l 0 專設為頭結點 date 2017 4 14 include include define initsize 100 define elemtype char typedef struct lnodelinklist i...

資料結構 線性表 2 鏈式表

鍊錶 所有元素不考慮相鄰位置,哪有空位就到 鍊錶分為單鏈表 雙鏈表 迴圈鍊錶。1.獲得鍊錶第i個資料的演算法思路 1 宣告乙個結點p指向鍊錶第乙個結點,初始化j從1開始 2 當j3 若到鍊錶末尾p為空,則說明第i個元素不存在 4 否則查詢成功,返回結點p的資料。2.單鏈表的插入和刪除 插入 1 宣告...

資料結構 線性表的鏈式表示(鍊錶)

下面介紹第二種順序表,也就是鍊錶 鍊錶有兩個,單鏈表和雙鏈表,先介紹單鏈表 include includetypedef struct nodenode,linklist node creatlist1 node head return head void output node head int ...