能輸入計算機且被計算機處理的各種符號的集合
1、是資訊的載體
2、是對客觀十五符號化的表現
3、能夠被計算機識別,儲存,加工
分類:
數值型,整數,實數
非數值型,文字,影象,聲音
是 資料元素的基本單位,在程式中作為乙個整體進行處理
也稱為元素,記錄,節點,頂點
構成上述的資料元素的最小單位
資料 > 資料元素 >資料項表 > 記錄 > 字段
性質相同的資料元素的集合,資料的乙個子集
資料物件是性質相同的資料元素的集合
資料元素之間的關係構成了資料的結構
存在一種或多種特定關係的資料元素集合
包含的內容:
1、邏輯結構,抽象描述的關係結構
2、物理結構(儲存結構),在記憶體中的表現形式
3、運算(操作),對資料元素可以實現的一些運算
分類:
是否線性劃分:線性結構(線性表,棧,佇列,串)和非線性結構(樹,圖)
邏輯結構劃分:集合,線性,樹形,圖狀
基本結構:
1、順序儲存
2、鏈式儲存
3、索引儲存
4、雜湊儲存
一組性質相同的值的集合,或者說這個值集合的一組操作的總稱
指乙個數學模型,或在此模型上進行的操作
將客觀事物抽象成可以在計算機中建立的資料
d 資料物件,s 資料物件的關係集合, p 資料物件的基本操作集
資料型別名
具有相同特性的資料元素的乙個有限序列
資料元素的個數n,即表的長度,n=0表示空表
1、非空的線性表,開始節點沒有直接前驅,僅有乙個直接後驅
2、僅有乙個終端節點,沒有直接後繼,終端節點僅有乙個直接前驅
initlist 初始化
destroylist 銷毀
insert 指定位置插入元素
delete 刪除指定元素
clearlist 清空
isempty 是否為空
isfull 是否為滿
length 獲取長度
getelementbyindex 根據索引獲取元素
indexof 根據元素獲取索引
priorelement(previous) 獲取前驅元素
nextelement 獲取後繼元素
ppt課程演示的使用的是c++**(深感c的純粹,c++**就是不倫不類)
也可能是為了便於學生理解才沒有使用c**表現
#include #include #include typedef enum boolean;typedef struct * ppolynomial, polynomial;
typedef struct * plist, list;
/** * 初始化線性表,根據maxsize引數在記憶體中找一塊可以訪問的連續空間,返回給這個指標
* @param plist
* @param maxsize
*/void initlist (plist plist, int maxsize)
plist -> length = 0;
plist -> maxsize = maxsize;
}/**
* 釋放這個指標指向的記憶體空間,並重置這個指標,不可以重新訪問那塊空間
* @param plist
*/void relieflist(plist plist)
/** * 長度回到初始值即表示,清空了線性表
* @param plist
*/void clearlist(plist plist)
/** * 獲取長度
* @param plist
* @return
*/int getlength(plist plist)
/** * 是否為空
* @param plist
* @return
*/boolean isempty(plist plist)
/** * 是否為滿
* @param plist
* @return
*/boolean isfull(plist plist)
/** * 根據索引查詢元素
* @param plist
* @param index
* @param ppolynomial
* @return
*/boolean getelementbyindex(plist plist, int index, ppolynomial ppolynomial)
/** * 根據提供的元素查詢該元素的索引
* @param plist
* @param ppolynomial
* @return
*/int getindexbyelement(plist plist, ppolynomial ppolynomial)
/** * 按指定位置插入元素
* @param plist
* @param polynomial
* @param index
* @return
*/boolean insertelement(plist plist, polynomial polynomial, int index)
/** * 按指定位置刪除元素
* @param plist
* @param index
* @return
*/boolean deleteelement(plist plist, int index)
/** * 追加元素
* @param plist
* @param polynomial
* @return
*/ if (isfull(plist)) return false;
plist -> ppolynomial[plist -> length] = polynomial;
++ plist -> length;
return true;
}/**
* 遍歷展示list
* @param plist
*/void tr**erselist(plist plist) ;
printf("[");
for (int i = 0; i < plist -> length; ++i) ]\n", plist -> ppolynomial[i].p, plist -> ppolynomial[i].e);
break;
}printf(", ", plist -> ppolynomial[i].p, plist -> ppolynomial[i].e);
}}int main() ;
polynomial polynomial2 = ;
polynomial polynomial3 = ;
insertelement(&list, polynomial3, 0);
tr**erselist(&list);
deleteelement(&list, 0);
tr**erselist(&list);
relieflist(&list);
return 0;
}
實現動態儲存,我的想法就是重新找可操作的記憶體空間,
然後複製上去,移除原始指標指向,指向新的位址
/** * 追加元素
* @param plist
* @param polynomial
* @return */
if(isfull(plist))
free(plist ->ppolynomial);
plist -> ppolynomial =tempp;}
plist -> ppolynomial[plist -> length] =polynomial;
++ plist ->length;
return
true
;}
資料結構筆記01
資料結構的起源 計算機從解決數值計算問題到解決生活中的問題 現實生活中的問題涉及不同個體間的複雜關係 需要在電腦程式中描述生活中個體間的聯絡 資料結構主要研究非數值計算程式問題中的操作物件以及它們之間的關係 不是研究複雜的演算法 資料結構中的基本概念 資料 程式的操作物件,用於描述客觀事物 資料的特...
資料結構實踐 猴子選大王(陣列版)
一群猴子,編號是1,2,3 m,這群猴子 m個 按照1 m的順序圍坐一圈。從第1只開始數,每數到第n個,該猴子就要離開此圈,這樣依次下來,最後乙隻出圈的猴子為大王。輸入m和n,輸出猴子離開圈子的順序,從中也可以看出最後為大王是幾號猴子。要求採用陣列作為儲存結構完成。在乙個陣列中,陣列中用1表示猴子在...
2020版資料結構筆記
2020版資料結構筆記1 1本章涉及的知識點是學好資料結構的基本功 演算法設計部分 書寫規範 介面 假如函式是一台機器,可以用原材料來加工成成品,那麼就可以理解成原材料的入口。可以把介面理解為使用者和函式打交道的地方,通過介面,使用者輸入了自己的資料,得到了自己想要的結果。至此我們可以知道,考研綜合...