国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 學(xué)習(xí)筆記 > 數(shù)據(jù)結(jié)構(gòu)的定義與類型分析(雷同學(xué))

數(shù)據(jù)結(jié)構(gòu)的定義與類型分析(雷同學(xué)) 時(shí)間:2018-07-26      來(lái)源:未知

數(shù)據(jù)結(jié)構(gòu)的定義 :數(shù)據(jù)元素間的相互關(guān)系

(DS)

數(shù)據(jù)(Data)定義 :即信息的載體(可以輸入計(jì)算器且能被計(jì)算機(jī)識(shí)別,存儲(chǔ) 和處理的符號(hào)總稱)

數(shù)據(jù)元素定義 :數(shù)據(jù)的基本元素(即記錄)(若干基本項(xiàng)組(字段、數(shù)據(jù)結(jié)構(gòu))成)

數(shù)據(jù)類型定義 :對(duì)元素取值范圍與運(yùn)算的限定

數(shù)據(jù)存儲(chǔ)結(jié)構(gòu) :

順序存儲(chǔ) --將數(shù)據(jù)結(jié)構(gòu)中的各元素按照其邏輯順序存放在存儲(chǔ)器 的一片連續(xù)的存儲(chǔ)空間中

鏈?zhǔn)酱鎯?chǔ) --將數(shù)據(jù)結(jié)構(gòu)中的各元素分布在存儲(chǔ)器不同點(diǎn),用地址或 鏈指針把他們聯(lián)系起來(lái)的存儲(chǔ)結(jié)構(gòu)

索引存儲(chǔ) --在數(shù)據(jù)存儲(chǔ)的同時(shí)建立一個(gè)附加索引表,:索引存儲(chǔ)結(jié)構(gòu)=數(shù)據(jù)文件+索引表

散列存儲(chǔ) --根據(jù)數(shù)據(jù)元素的關(guān)鍵字key計(jì)算存儲(chǔ)地址然后數(shù)據(jù)元素按地址存放,的這種存儲(chǔ)結(jié)構(gòu)

p126頁(yè)

數(shù)據(jù)結(jié)構(gòu)類型

數(shù)據(jù)結(jié)構(gòu)關(guān)系:

物理關(guān)系:順序關(guān)系、鏈?zhǔn)疥P(guān)系

運(yùn)算關(guān)系:增(加),刪(除),改(修改),查(詢),排(序)

邏輯關(guān)系:

(結(jié)構(gòu))

集合 : 數(shù)據(jù)元素間除同屬一集合無(wú)其他關(guān)系

線性: 線性(關(guān)系) :一對(duì)一(如線性表、棧、隊(duì)列)

非線性: 層次關(guān)系(樹(shù)狀結(jié)構(gòu)) :一對(duì)多

網(wǎng)狀關(guān)系(圖狀結(jié)構(gòu)) :多對(duì)多

算法特性: (1)有窮性---算法執(zhí)行的步驟或規(guī)則是有限的

(2)確定性---每個(gè)計(jì)算步驟無(wú)二義性

(3)可行性---每個(gè)計(jì)算步驟都能在有限時(shí)間內(nèi)完成

(4)輸入---算法有一個(gè)或多個(gè)輸入

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

評(píng)判算法好(壞): 消耗時(shí)間少 、存儲(chǔ)空間少,

易(理解 編程 調(diào)試 和維護(hù))的程度,

問(wèn)題規(guī)模(小):(輸入數(shù)據(jù)量的大小,用n表示)

算法消耗的時(shí)間復(fù)雜度 T(N):(算法消耗的時(shí)間)

算法消耗的空間復(fù)雜度 D(N):(算法消耗的空間)

語(yǔ)句頻度: 可執(zhí)行語(yǔ)句在算法(或程序)中重復(fù)執(zhí)行的次數(shù)

(一條語(yǔ)句的時(shí)間復(fù)雜度=語(yǔ)句平度 *消耗時(shí)間) p129頁(yè)

算法與程序的聯(lián)系與區(qū)別:

共同點(diǎn):二者皆為完成某個(gè)任務(wù),或解決某個(gè)問(wèn)題而編制的規(guī)則(或語(yǔ)句)的 有序集合

區(qū)別 : 一,算法與計(jì)算機(jī)無(wú)關(guān),但程序依賴于具體的計(jì)算機(jī)語(yǔ)言

二,算法必須有窮而程序可能無(wú)窮

三,算法可忽略一些語(yǔ)法細(xì)節(jié)問(wèn)題,重點(diǎn)放在解決問(wèn)題的思路上, 但程序必須嚴(yán)格按相應(yīng)的語(yǔ)言工具的語(yǔ)法算法換成程序后才能在計(jì)算機(jī)上運(yùn)行。

線性表: 是信息表的一種形式,數(shù)據(jù)元素間滿足線性關(guān)系(或線性結(jié)構(gòu))

非空線性表的特征:

a0是表頭無(wú)前驅(qū)

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

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

(當(dāng)關(guān)系表長(zhǎng)n<=1時(shí),關(guān)系集R為空)

創(chuàng)建Makefile 文件

test:main.c seqlist.c

gcc main.c seqlist.c -o test

創(chuàng)建shell 文件

#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;

//增,刪,改,查,排序等

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

創(chuàng)建.c主程序文件

#include "seqlist.h"

#include

#include

#include

seqlist *create_list() //創(chuàng)建空表

{

seqlist *l; //創(chuàng)建鏈表指針

l = (seqlist *)malloc(sizeof(seqlist)); //開(kāi)辟malloc空間并強(qiáng)轉(zhuǎn)

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

return NULL;

}

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

l->last = -1;

return l;

}

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

{

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

return -1;

if (pos < 0 || pos > l->last + 1 || (l->last + 1 == size)) //判斷插入位置是否有效,無(wú)效返回-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)//刪除某一地址下的數(shù)據(jù)

{

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

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)//更改

{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)//輸出函數(shù)

{

int i = 0;

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

while(i <= l->last){

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

i++;

}

printf("\n");

}

創(chuàng)建主函數(shù)調(diào)用

#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);

}

上一篇:樹(shù)的基本概念

下一篇:數(shù)據(jù)結(jié)構(gòu)(第一講)

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見(jiàn)科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5,京公海網(wǎng)安備11010802025203號(hào)

回到頂部