2 2線性表的結構體定義和基本操作

2021-09-09 05:31:08 字數 1640 閱讀 9509

#define maxsize 100   //這裡定義乙個整型常量maxsize,值為100
1、順序表的結構體定義

typedef structsqlist;                          //順序表型別的定義
乙個順序表包括乙個儲存表中元素的陣列data和乙個指示元素個數的變數length。如下圖2-9所示

ps:在考試中用得最多的順序表的定義是如下形式

int a[maxsize];

int n;

這兩句定義了乙個長度為n,表內元素為整數的順序表。這種定義方式更加簡潔2、單鏈表結點定義

typedef struct lnodelnode;                        //定義單鏈表結點型別
3、雙鏈表結點定義

typedef struct lnodedlnode;                       //定義單鏈表結點型別
ps:結點是記憶體中一片由使用者分配的儲存空間,只有乙個位址來表示它的存在,沒有顯式的名稱,因此我們會在分配鍊錶結點空間的時候,同時定義乙個指標,來儲存這片空間的位址,並且常用這個指標的名稱來作為結點的名稱。

lnode *a = (lnode *)malloc(sizeof(lnode));
使用者分配了一片lnode型空間,也就是構造了乙個lnode型的結點。這裡a命名了兩個東西:乙個是結點,另乙個是指向這個結點的指標。當出現「p指向q」,此時p指代指標,因為結點不能指向結點;當「用函式free()釋放p的空間」,此時p指代結點,因為p既是指標名又是結點名,但指標變數自身所需的儲存空間是系統分配的,不需要使用者呼叫函式free()釋放,只有使用者分配的儲存空間才需要使用者自己來釋放。

(1)按元素值得查詢演算法

在順序表中查詢第乙個值等於e的元素,並返回其下標,**如下:

int findelem(sqlist l,int e)

例2-2刪除順序表l中下標為p(0≤p≤length-1)的元素,成功返回1,否則返回0,將刪除元素的值賦給e。分析:要刪除表中下標為p的元素,只需要將其後邊的元素逐個往前移動乙個位置,將p上的元素覆蓋掉即可。

**如下:

int deleteelem(sqlist &l,int p,int &e)	//需要改變的變數用引用型

(2)求指定位置元素的演算法

用e返回l中p(0≤p≤length-1)位置上的元素,**如下:

int getelem(sqlist l,int p,int &e)

線性表的結構體定義和基本操作

define maxsize 100 定義整型變數maxsize為1001.順序表的結構體定義 typedef struct sqlist 2.單鏈表的結點定義 typedef struct lnodelnode 2.雙鏈表結點定義 typedef struct dlnodedlnode ps 結點...

2021 01 14線性表的定義和一些基本操作

本人大一新生 非計算機專業 上學期跟著學校的安排學習了c語言,可惜院系並不準備讓我們繼續學習資料結構,因此趁著寒假時間我打算自學一下資料結構,並把一些總結發到我的部落格上,出現的一些錯誤希望各位大佬能夠提出。而這篇文章就從最基礎的線性表談起。1.線性表 list 是零個或者是多個元素的有限序列。首先...

線性表的基本定義和操作

目錄 線性表的順序表示 線性表是具有相同資料型別的n n geq 0 個資料元素的有限序列 其中n為表長,當n 0 n 0n 0時,該線性表是乙個空表。若用l ll命名線性表,則其一般表示如下 l a1,a 2,an l a 1,a 2 cdot cdot cdot a n l a1 a2 an 其...