久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 學習筆記 > 數據結(jie)構的(de)定義(yi)與(yu)類(lei)型分析(雷(lei)同學)

數據結構的(de)定義與類型分析(雷同學(xue)) 時間:2018-07-26      來源:未(wei)知

數(shu)(shu)據結(jie)構的定義 :數(shu)(shu)據元素間的相(xiang)互關系

(DS)

數據(Data)定(ding)義 :即信息(xi)的載體(可以輸入(ru)計算(suan)器(qi)且能(neng)被計算(suan)機識別,存(cun)儲 和處理的符號總稱)

數(shu)據元素(su)定義(yi) :數(shu)據的基(ji)本元素(su)(即記錄)(若干(gan)基(ji)本項組(字(zi)段、數(shu)據結構)成)

數據類型定義(yi) :對元(yuan)素取值范圍與運算的(de)限定

數(shu)據存(cun)儲結構(gou) :

順序存儲 --將數(shu)據結構中(zhong)的各元素按照其邏輯順序存放(fang)在存儲器 的一片連(lian)續的存儲空間(jian)中(zhong)

鏈(lian)式存儲 --將數(shu)據結(jie)構中的各元素(su)分布(bu)在存儲器(qi)不同點,用(yong)地址或(huo) 鏈(lian)指針把(ba)他們(men)聯系(xi)起來的存儲結(jie)構

索(suo)引存儲(chu) --在數據存儲(chu)的同時建立一個附加索(suo)引表(biao)(biao),:索(suo)引存儲(chu)結構=數據文(wen)件(jian)+索(suo)引表(biao)(biao)

散列存(cun)(cun)儲(chu) --根(gen)據(ju)數(shu)據(ju)元素(su)的(de)(de)關鍵字key計算(suan)存(cun)(cun)儲(chu)地址然后數(shu)據(ju)元素(su)按地址存(cun)(cun)放,的(de)(de)這種存(cun)(cun)儲(chu)結構(gou)

p126頁

數據結構(gou)類型

數據(ju)結構關(guan)系:

物(wu)理關(guan)系(xi):順序(xu)關(guan)系(xi)、鏈式關(guan)系(xi)

運算關(guan)系:增(加(jia)),刪(除),改(修改),查(詢),排(序)

邏輯關系:

(結構)

集合(he) : 數據元素(su)間除同屬一集合(he)無其他關系

  線性(xing)(xing): 線性(xing)(xing)(關系) :一對(dui)一(如線性(xing)(xing)表、棧、隊列)

非(fei)線(xian)性: 層次(ci)關(guan)系(樹狀結構) :一對多

網狀關系(圖狀結構(gou)) :多(duo)對多(duo)

算法特性(xing)(xing): (1)有窮(qiong)性(xing)(xing)---算法執(zhi)行(xing)的步驟或規則是有限的

(2)確定性---每個計算步驟無二義性

(3)可(ke)行(xing)性---每個(ge)計(ji)算步驟都能在有限時間內完成

(4)輸(shu)入---算(suan)法有(you)一個(ge)(ge)或多個(ge)(ge)輸(shu)入

(5)輸出---算法有一個或多個輸出 p128頁

評(ping)判算(suan)法好(hao)(壞): 消(xiao)耗時(shi)間(jian)少 、存(cun)儲空間(jian)少,

易(yi)(理解(jie) 編程 調試 和維(wei)護)的程度,

問題規模(mo)(小):(輸入數(shu)據(ju)量的大(da)小,用(yong)n表示)

算(suan)法(fa)(fa)消(xiao)耗(hao)的時間復雜(za)度 T(N):(算(suan)法(fa)(fa)消(xiao)耗(hao)的時間)

算(suan)法消耗的(de)空間(jian)復(fu)雜(za)度 D(N):(算(suan)法消耗的(de)空間(jian))

語(yu)句頻度: 可執行語(yu)句在算法(或程序)中重復執行的次數(shu)

(一條語(yu)句的時(shi)間復雜度=語(yu)句平度 *消耗時(shi)間) p129頁(ye)

算法與程序的聯系與區(qu)別(bie):

共同點(dian):二者(zhe)皆為完(wan)成某個任務(wu),或解決某個問(wen)題而編制(zhi)的規則(或語(yu)句)的 有序集合

區別 : 一,算法(fa)與計(ji)算機無關,但程序依賴于具體的計(ji)算機語言

二(er),算(suan)法必須有窮而程序可能無(wu)窮

三,算法(fa)可(ke)忽略(lve)一(yi)些語(yu)法(fa)細節問(wen)題,重(zhong)點放在解決問(wen)題的(de)思(si)路上, 但程(cheng)序(xu)必須(xu)嚴格按相應的(de)語(yu)言(yan)工(gong)具的(de)語(yu)法(fa)算法(fa)換(huan)成程(cheng)序(xu)后才能在計算機上運行。

線性表(biao)(biao): 是信息表(biao)(biao)的一種形式,數據元素(su)間滿足(zu)線性關系(xi)(或線性結(jie)構)

非空(kong)線性表的特征:

a0是表頭無前驅

a(n-1)是表尾無后繼

其他每個元素有且僅一個直(zhi)接(jie)前驅a(i-1)和直(zhi)接(jie)后繼a(i+1)

(當關系(xi)表長n<=1時,關系(xi)集R為空)

創建Makefile 文件(jian)

test:main.c seqlist.c

gcc main.c seqlist.c -o test

創建(jian)shell 文件(jian)

#ifndef SEQLIST_H

#define SEQLIST_H

#include

#include

#include

typedef int data_t;

#define size 15

typedef struct node{

data_t data[size];

int last;

}seqlist;

//增(zeng),刪,改(gai),查,排(pai)序等

seqlist *create_list();

 int insert_list(seqlist *l, int pos, data_t value);

int delte_list(seqlist *l, int pos);

int change_list(seqlist *l, int pos, data_t value);

data_t select_list(seqlist *l, int pos);

void printf_list(seqlist *l);

#endif

創建(jian).c主程序文件

#include "seqlist.h"

#include

#include

#include

seqlist *create_list() //創建空表

{

seqlist *l; //創建鏈表指(zhi)針(zhen)

l = (seqlist *)malloc(sizeof(seqlist)); //開(kai)辟malloc空間并強轉

if (l == NULL){ //判斷(duan)是否為空,

return NULL;

}

memset(l->data, 0, 4*size); //把所有(you)空間初(chu)始(shi)化為(wei)0,memset初(chu)始(shi)化的(de)意思(si)

l->last = -1;

return l;

}

int insert_list(seqlist *l, int pos, data_t value)//插入數(shu)據

{

if (l == NULL) //首(shou)先判斷是(shi)否為空

return -1;

if (pos < 0 || pos > l->last + 1 || (l->last + 1 == size)) //判斷插入位置是(shi)否有效,無效返回-1

return -1;

int i;

for(i = l->last; i >= pos; i--)

l->data[i+1] = l->data[i];

l->data[pos] = value;

l->last = l->last + 1;

return 0;

}

int delte_list(seqlist *l, int pos)//刪(shan)除某一地(di)址下的數據(ju)

{

if(l==NULL || l->last == -1 )//同樣判斷刪除(chu)位置是否(fou)有效(xiao)

return -1;

if(pos < 0 || pos>l->last+1)

return -1;

int i;

for(i=pos; ilast; i++)

l->data[i] = l->data[i+1];

l->last--;

return 0;}

int change_list(seqlist *l, int pos, data_t value)//更(geng)改

{if (l == NULL)

return -1;

if (pos < 0 || pos > l->last + 1 )

return -1;

int i;

for(i = pos; i < l->last; i++)

l->data[pos] = value;

return 0;

}

data_t select_list(seqlist *l, int pos)//查詢

{if (l == NULL)

return -1;

else

return l->data[pos];

}

void printf_list(seqlist *l)//輸出函數

{

int i = 0;

printf("seqlist : l->last = %d\n&quot;, l->last);

while(i <= l->last){

printf("----%d ", l->data[i]);

i++;

}

printf("\n");

}

創建(jian)主函數調用

#include "seqlist.h"

#include

#include

#include

void main()

{

seqlist *l = create_list();

if (l == NULL)

printf("create list failed\n");

insert_list(l, 0, 2);

insert_list(l, 1, 3);

insert_list(l, 2, 5);

insert_list(l, 3, 7);

insert_list(l, 4, 9);

printf_list(l);

insert_list(l, 2, 13);

printf_list(l);

delte_list(l,2);

printf_list(l);

change_list(l,3,666);

printf_list(l);

select_list(l,3);

printf_list(l);

}

上一篇:樹的基本概念

下一篇:數據結構(第一講)

熱點文(wen)章推薦
華清(qing)學員就業榜(bang)單
高薪學員經(jing)驗分享
熱點新聞(wen)推薦
前臺專線(xian):010-82525158 企業培訓洽談專線:010-82525379 院校合作洽(qia)談(tan)專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部