用c語言描述順序儲存結構的線性表求表長的演算法

2025-01-03 22:35:13 字數 3738 閱讀 4128

1樓:網友

#include

#include

#define list_init_size 5#define listincrement 10#define overflow -2

typedef int status;

typedef int elemtype;

typedef struct

elemtype *elem;

int length;

int listsize;

sqlist;

status initlist_sq(sqlist &l)*)malloc(list_init_size * sizeof(elemtype));

if(! exit(overflow);;

return 1;

將順序表初始化為5個元素,在結構中定義了順序表的長度,int length:所以在主函式中可以直接呼叫用printf("%d",就得到了當前的長度,無論是刪除,新增,都會隨著改變,比如我們建乙個新增的函式。

int * q , p ,*newbase;

if(i<1 ||i> +1) return 0;

if( >=

newbase=(elemtype *)realloc(,(sizeof(elemtype));

if(!newbase) exit (overflow);;

q=&(;for(p=&( p>=q ;-p)

p+1) =p;

q = e;

return 1;

如果加乙個元素,就會把自動加1,這樣避免了再寫函式求表長。

資料結構線性表之線性表的順序儲存結構[1]

2樓:戶如樂

順序表定義

順序表 即用一組連續的儲存單元依次存放線性表的資料元素 若每個資料元素佔用c個儲存單元 並以所佔的第乙個儲存單元位址作為這個資料元素的儲存位置 則表中任一元素ai的儲存位址為 loc(ai)=loc(a )+i )*c ≤i≤n

順序表特點

為表中相鄰的元素ai和ai+ 賦以氏如辯相鄰的儲存位置loc(ai)和loc(ai+ )

順序表的基本運算。

順序表的建立

由於程式語言中的向量(一組陣列)就是採用順序儲存表示 故可用向量這種陣列型別來描述順序表 我們用結構型別來定義順序表型別 如下 輸入n個整數 產生乙個儲存這些整數的順序表l的殲缺函式 如下。

順序表的查詢

在乙個順序表中查詢元素值為x的元素的函式 如下。

順序表的插入

線性表的插入橡洞運算是指在表的第i( ≤i≤n)個位置上 插入乙個新結點x 使長度為n的線性表(a … ai ai … an)變成長度為n+ 的線性表(a … ai ax ai … an) 插入操作分成兩階段 第一階段將位於插入點以後的資料元素依次向後移動 為新資料元騰出乙個空間 然後在第二階段中將資料元素插入空擋 在乙個順序表中第i個元素之前插入乙個元素x的函式 如下。

lishixinzhi/article/program/sjjg/201311/23508

資料結構之線性表的順序儲存[2]

3樓:機器

在程式設計語言中 一維陣列在記憶體中佔用的儲存空間就是一組連續的儲存區域 因此用一維陣列來表示順序表的資料儲存區域是再合適不過的 考慮到線性表的運算有插入 刪除等運算(即表長是不斷變化的) 因此陣列的容量需足夠大 當然也可考慮在實際執行中動態分配記憶體和動態增加記憶體 本章中鄭察暫不作考慮陣列的動態分配問題 當表長超過陣列的容量時視為溢位。

順序表可用一維陣列data[maxsize]表示 其中maxsize是乙個根據實際問題定義的足夠大的整數 用乙個變數 length 記錄當前線性表滾猜中元素的個數 即線性表的長度 同時由於順序表中的資料從 data[ ]開始依次順序存放 因此 length 表示最後乙個元素的下標 始終指向線性表中最後乙個元素 當表空時 length = 我們用datatype表示線性表中資料元素的型別 這種儲存思想在c語言中的定義如下。

#define maxsize

datatype data[maxsize]; datatype可以是整型 實型等資料型別*/

int length;

喊備茄表長為length 資料元素分別存放在data[ ]到data[length ]中 maxsize為最大使用記憶體空間 length≤maxsize

我們通常將 data 和 length 封裝成乙個結構作為順序表的型別。

typedef struct node {

datatype data[maxsize];

int length;

seqlist;

定義乙個順序表 seqlist l;

lishixinzhi/article/program/sjjg/201311/23745

線性表 - 順序儲存結構 - 順序表

4樓:一襲可愛風

順序數激表。

順序表的定義。

順序儲存方法。

即把線性表的結點按邏輯次序依次存放在一組位址連續的儲存單元裡的方法。

順序表(sequential list)

用順序存枝姿儲方法儲存的線性表簡稱為順序表(sequential list)

結點a i 的儲存位址。

不失一般性 設線性表中所有結點的型別相同 則每個結點所佔用儲存空間大小亦相同 假設表中每個結點佔用c個儲存單元 其中第乙個單。

元的儲存位址則是該結點的儲存位址 並設表中開始結點a 的儲存位址(簡稱為基位址)是loc(a ) 那麼結點a i 的儲存位址loc(a i

可通過下式計算。

loc(a i )=loc(a )+i )*c ≤i≤n

注意 在順序表中 每個結點a i 的儲存位址是該結點在表中的位置i的線性函式 只要知道基位址和每個結點的大小 就可在相同時間內求出任一結。

點的儲存位址 是一種 隨機存取結構。

順序表型別定義。

#define listsize //表空間的大小可根據實際需要而定 這裡假設為。

typedef int datatype; /datatype的型別可根據實際情況而定 這裡假設為int

typedef struct {

datatype data[listsize];/向量data用於存放表結點。

int length;//當前的表長度。

seqlist;

注意 用向量這種順序儲存的陣列型別儲存線性表的元素外 順序表還應該用乙個變數來表示線性表的長度屬性 因此用結構型別來定義順序表類。

型 存放線性表結點的向量空間的大小listsize應仔細選值 使其既能滿足表結點的數目動態增加的需求 又不致於預先定義過大而浪費儲存。

空間 由於c語言中向量的下標從 開始 所以若l是seqlist型別的順序表 則線性表的開始結點a 和終端結點a n 分別儲存在l data[ ]和。

l data[l length ]中。

若l是seqlist型別的指標變數 則a 和a n 分別儲存在l >data[ ]和l >data[l >length ]中。

順序表的特點。

順序表是用向量實現的線性表 向量的下標可以看作結點的相對位址 因此順序表的的特點是邏輯上相鄰的結點猛畢絕其物理位置亦相鄰。

lishixinzhi/article/program/sjjg/201311/23579

資料結構c語言描述,資料結構(C語言描述)

include include include define datatype int define maxsize 1000 typedef struct nodebitreenode datatype bt maxsize bitreenode buildbtree datatype bt,in...

C語言關於結構體的問題,C語言結構體成員的引用問題

你要傳的是乙個陣列吧,直接這樣寫就行了 void show struct length pointer 使用時就可以按你那樣的直接取下標 point count 呼叫也不對 void show pointer 不知道這裡怎麼錯了,請大家講下 改成show pointer 就行了,還有你之前的定義st...

C語言補充函式,以下對C語言函式的有關描述中,不正確的描述是哪個?(選擇是問題補充裡)

這些東西你還是自己在網上找一些類似的看看,然後自己寫,對你有很大好處 以下對c語言函式的有關描述中,不正確的描述是哪個?選擇是問題補充裡 這個是多選題 答案abc 函式可以巢狀呼叫但不可以潛逃定義 函式可以沒有返回值 void 可以放在多個檔案中 在c中,呼叫函式時,只能把實參的值傳送給形參,形參的...