線性結構 線性表常用操作

2021-09-21 18:47:22 字數 3188 閱讀 7685

線性表常用操作(順序儲存,鏈式儲存)

順序儲存的優點:

1.根據位序查詢和求線性表長度比較簡單

2.**容易理解

鏈式儲存優點

1.節省空間

一、順序儲存實現

1.宣告定義

#include

#include

typedef

int position;

typedef

int elementtype;

typedef

struct lnode *ptrtolnode;

typedef ptrtolnode list;

#define maxsize 100

struct lnode

;

2.建立空線性表(初始化)
list makeempty()

//構造乙個空表

3.在指定位置插入
bool insert

(list l,elementype x,

int i)

if(i<

1||i>last+2)

//檢測插入位置是否合法

for(j=l->last;j>i-

1;j--

)//陣列下標從0開始

l->data[j+1]

=l->data[j]

;//從最後乙個元素開始,依次向後移動

l->data[i-1]

=x; l->last++

;//last仍指向最後元素

return true;

}

4.查詢元素第一次出現的位置
int

find

(elementype x,list l)

*

5.刪除指定位置元素
bool delete

(list l,

int i)

for(j=i;j<=l->last;j++

)//將後面元素依次向前移動

l->last--

;return true;

}

6.根據位序返回相應元素
elementtype findkth

(int k,list l)

return l->data[k-1]

;}

7.返回線性表的長度
int

length

(list l)

二、鏈式儲存實現

1.定義和宣告

#include

#include

typedef

int elementype;

typedef

struct lnode *ptrnode;

struct lnode

;typedef ptrnode position;

typedef ptrnode list;

list l;

2.求線性表長度
int

length

(list l)

return cnt;

}

3.按位序查詢線性表中的元素
#define error -1

elementype findkth

(list l,

int k)

if(cnt==k&&p)

return p->data;

else

return error;

}

4.按值查詢線性表中的元素並返回位址
position find

(list l,elementype x)

5.在指定位置插入元素

基本思路:找到位序為i-1的結點pre。若存在,則申請乙個新結點並在資料域填上相應值x,然後將新結點插入到pre之後,返回結果鍊錶。

注:在這裡為鍊錶增加乙個空的頭結點,目的是:如果不增加,要在第乙個位置插入,

tmp->next=l;

return tmp;

表頭指標l可能會變,l不能被帶回來,所以為鍊錶增加乙個空的頭結點

bool insert

(list l,elementype x,

int i)

if(pre==

null

||cnt!=i-1)

else

}

6.刪除指定位序i的元素

先找到前乙個元素,然後刪除結點並釋放空間

bool delete

(list l,

int i)

if(pre==

null

||cnt!=i-

1||pre->next==

null

)//注意準備刪除的元素不能為空

else

//找到待刪結點的前乙個結點

}

重要操作1.在插入元素時,先連tmp與後面相連,在將前面與temp相連,順序不可顛倒

tmp->data=x;

tmp->next=pre->next;

pre->next=temp;

2.在刪除操作時,先讓temp這個臨時結點等於pre後面要刪除的結點,然後再讓pre的下乙個結點等於temp(等價於要刪除的結點)的下乙個結點,最後釋放臨時結點temp(也就是要刪除的結點)。

tmp=pre->next;

pre->next=tmp->next;

free

(tmp)

;

3.基本的遍歷

pre=l;

while

(pre&&cnt

線性結構 線性表

線性結構 線性表 棧 佇列 串和陣列 線性結構的特點 除了第乙個元素和最後乙個元素外,每個資料元素有乙個前驅和乙個後繼,線性表是最簡單 最基本 最常用的資料結構,它有順序儲存和鏈式儲存兩種儲存方案 線性表是n個資料元素的有限序列,在表中,元素之間存在著線性的邏輯關係 特點 同一性 線性表由同類元素組...

線性結構 線性表

資料結構是 adt abstract data type,資料抽象型別 的物理實現。什麼是線性表?線性表 由同型別的資料元素構成有序序列的線性結構 兩種實現模型 順序表,鍊錶 資料物件集 n個元素構成的有序序列 初始化鍊錶 init 返回鍊錶長度 len 判斷為空 is empty 指定位置新增 i...

線性結構 線性表

由同型別資料元素構成有序序列的線性結構 list makeempty int find elementtype x,list ptrl void insert elementtype x,int i,list ptrl if i 1 i ptrl last 2 for j ptrl last j i...