国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!

這篇具有很好參考價值的文章主要介紹了[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

零.必備知識

a.順序表的底層是數(shù)組.

b.數(shù)組在內(nèi)存中是連續(xù)存放的.

c.動態(tài)內(nèi)存空間的開辟(malloc,calloc,realloc).

一.順序表的定義與實現(xiàn)?

????????1.1 順序表的定義?

????????1.2 順序表的初始化?

????????1.3 順序表的銷毀?

????????1.4 順序表容量的檢查與調(diào)整(最關(guān)鍵的部分)

????????1.5 順序表的尾插

????????1.6 順序表的頭插?

????????1.7 順序表的尾刪

????????1.8 順序表的頭刪

?????????1.9 順序表中在指定位置之前插入數(shù)據(jù)

????????1.10 刪除指定位置的數(shù)據(jù)?

????????1.11 順序表中查找指定數(shù)據(jù)

二.順序表源碼?

????????SeqList.h

????????SeqList.c

?


零.必備知識


a.順序表的底層是數(shù)組.

b.數(shù)組在內(nèi)存中是連續(xù)存放的.

c.動態(tài)內(nèi)存空間的開辟(malloc,calloc,realloc).

一.順序表的定義與實現(xiàn)?

注:具體解釋都在注釋中(在代碼中具體分析!)

????????1.1 順序表的定義?

[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!,C語言階段相關(guān)習題總覽,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言,算法

????????1.2 順序表的初始化?

[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!,C語言階段相關(guān)習題總覽,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言,算法

????????1.3 順序表的銷毀?

[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!,C語言階段相關(guān)習題總覽,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言,算法

????????1.4 順序表容量的檢查與調(diào)整(最關(guān)鍵的部分)

[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!,C語言階段相關(guān)習題總覽,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言,算法?

????????1.5 順序表的尾插

[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!,C語言階段相關(guān)習題總覽,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言,算法

?[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!,C語言階段相關(guān)習題總覽,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言,算法

????????1.6 順序表的頭插?

[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!,C語言階段相關(guān)習題總覽,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言,算法

[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!,C語言階段相關(guān)習題總覽,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言,算法?

????????1.7 順序表的尾刪

[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!,C語言階段相關(guān)習題總覽,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言,算法

[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!,C語言階段相關(guān)習題總覽,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言,算法?

????????1.8 順序表的頭刪

[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!,C語言階段相關(guān)習題總覽,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言,算法

?[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!,C語言階段相關(guān)習題總覽,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言,算法

?????????1.9 順序表中在指定位置之前插入數(shù)據(jù)

[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!,C語言階段相關(guān)習題總覽,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言,算法

[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!,C語言階段相關(guān)習題總覽,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言,算法?

????????1.10 刪除指定位置的數(shù)據(jù)?

[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!,C語言階段相關(guān)習題總覽,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言,算法

[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!,C語言階段相關(guān)習題總覽,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言,算法?

????????1.11 順序表中查找指定數(shù)據(jù)

?[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!,C語言階段相關(guān)習題總覽,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言,算法文章來源地址http://www.zghlxwxcb.cn/news/detail-844849.html

二.順序表源碼?

????????SeqList.h

#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
 靜態(tài)順序表
//struct SeqList
//{
//	int arr[100];
//	int size;
//};

// 動態(tài)順序表的定義
typedef int DateType; //數(shù)據(jù)類型
typedef struct SeqList
{
	DateType* arr;
	int size; //數(shù)組中的有效元素個數(shù)
	int capacity; //數(shù)組的總?cè)萘?}SL;

// 順序表的初始化
void SLInit(SL* psl);
// 順序表的銷毀
void SLDestroy(SL* psl);
// 打印檢查
void SLprint(SL sl);
// 容量檢查與調(diào)整
void CheckCapacity(SL* psl);
// 尾插-頭插
void SLPushBack(SL* psl, DateType x);
void SLPushFront(SL* psl, DateType x);
// 尾刪-頭刪
void SLPopBack(SL* psl);
void SLPopFront(SL* psl);
// 在指定位置之前插入數(shù)據(jù)
void SLInsert(SL* psl, int pos, DateType x); //pos:點
// 刪除指定位置的數(shù)據(jù)
void SLErase(SL* psl, int pos);
// 順序表的查找
void SLFind(SL psl, DateType x);

????????SeqList.c

?

#define  _CRT_SECURE_NO_WARNINGS
#include "SeqList.h"
// 順序表的初始化
void SLInit(SL* psl)
{
	psl->arr = NULL;
	psl->size = psl->capacity = 0;
}
// 順序表的銷毀
void SLDestroy(SL* psl)
{
	if (psl->arr)
	{
		free(psl->arr); //釋放動態(tài)開辟的內(nèi)存空間
	}
	psl->arr = NULL;
	psl->size = psl->capacity = 0;
}
// 容量檢查與調(diào)整
void CheckCapacity(SL* psl)
{
	if (psl->size == psl->capacity) //空間不夠了,需要進行擴容
	{
		int newCapacity = psl->capacity == 0 ? 4 : psl->capacity * 2; //避免 psl->capacity初始容量為空
		DateType* temp = (DateType*)realloc(psl->arr, newCapacity * sizeof(DateType));
		if (temp == NULL) //避免因為realloc調(diào)整空間失敗,而導致psl->arr中的數(shù)據(jù)被清除
		{
			perror("realloc fail!");
			exit(1);
		}
		psl->capacity = newCapacity;
		psl->arr = temp;
	}
}
// 尾插
void SLPushBack(SL* psl, DateType x)
{
	CheckCapacity(psl);
	// 插入
	psl->arr[psl->size] = x;
	psl->size++;
}
// 頭插
void SLPushFront(SL* psl, DateType x)
{
	CheckCapacity(psl);
	for (int i = psl->size; i > 0; i--)
	{
		psl->arr[i] = psl->arr[i - 1]; //psl->arr[1] = psl->arr[0]
	}
	psl->arr[0] = x;
	(psl->size)++;
}

// 尾刪
void SLPopBack(SL* psl)
{
	assert(psl);
	assert(psl->size); //判斷是否為空
	(psl->size)--;
}
// 頭刪
void SLPopFront(SL* psl)
{
	assert(psl);
	assert(psl->size); //判斷是否為空
	for (int i = 0; i < psl->size - 1; i++)
	{
		psl->arr[i] = psl->arr[i + 1]; //psl->arr[psl->size - 1] = psl->arr[psl->size - 2]
	}
	(psl->size)--;
}

// 在指定位置之前插入數(shù)據(jù)
void SLInsert(SL* psl, int pos, DateType x)
{
	assert(psl);
	assert(pos >= 0 && pos <= psl->size);
	CheckCapacity(psl);
	for (int i = psl->size; i > pos; i--)
	{
		psl->arr[i] = psl->arr[i - 1]; //arr[pos + 1] = arr[pos]
	}
	psl->arr[pos] = x;
	psl->size++;
}
// 刪除指定位置的數(shù)據(jù)
void SLErase(SL* psl, int pos)
{
	assert(psl);
	assert(psl->size != 0);
	assert(pos >= 0 && pos < psl->size);
	for (int i = pos; i < psl->size - 1; i++)
	{
		psl->arr[i] = psl->arr[i + 1]; //arr[i - 2] = arr[i - 1]
	}
	psl->size--;
}
// 順序表的查找
void SLFind(SL* psl, DateType x)
{
	assert(psl);
	assert(psl->size != 0);
	for (int i = 0; i < psl->size; i++)
	{
		if (psl->arr[i] == x)
		{
			printf("找到了! 下標是%d\n", i);
			return;
		}
	}
	printf("找不到!\n");
}


// 打印
void SLprint(SL sl)
{
	for (int i = 0; i < sl.size; i++)
	{
		printf("%d ", sl.arr[i]);
	}
	printf("\n");
}

到了這里,關(guān)于[C語言][數(shù)據(jù)結(jié)構(gòu)][動態(tài)內(nèi)存空間的開辟]順序表的實現(xiàn)!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • C語言數(shù)據(jù)結(jié)構(gòu)一:動態(tài)數(shù)組

    先說一個概念:數(shù)組是一段 連續(xù) 的內(nèi)存空間。存儲相同的數(shù)據(jù)類型。 數(shù)組的兩個關(guān)鍵點: 連續(xù)內(nèi)存; 相同類型。 首先連續(xù)內(nèi)存:所以為了找到動態(tài)數(shù)組我們必須找到一個 首元素 地址。(內(nèi)存 首地址 。) 如果不知道首地址,那無法找到并操作內(nèi)存空間。 知道首地址了,

    2024年02月06日
    瀏覽(25)
  • 初階數(shù)據(jù)結(jié)構(gòu)之---導論,算法時間復雜度和空間復雜度(C語言)

    初階數(shù)據(jù)結(jié)構(gòu)之---導論,算法時間復雜度和空間復雜度(C語言)

    數(shù)據(jù)結(jié)構(gòu)其實也學了挺長時間了,說著是要刷題所以才沒怎么去寫關(guān)于數(shù)據(jù)結(jié)構(gòu)方面的內(nèi)容。數(shù)據(jù)結(jié)構(gòu)作為計算機中及其重要的一環(huán),如果不趁著假期系統(tǒng)整理一下著實可惜,我這里構(gòu)想的是將初階數(shù)據(jù)結(jié)構(gòu)和高階數(shù)據(jù)結(jié)構(gòu),分別分成兩個部分,初階數(shù)據(jù)結(jié)構(gòu)呢,大概有以下

    2024年02月22日
    瀏覽(29)
  • C++動態(tài)內(nèi)存開辟與釋放new和delete

    ??博主主頁: @??. 一懷明月?? ????? 專欄系列: 線性代數(shù),C初學者入門訓練,題解C,C的使用文章,「初學」C++,數(shù)據(jù)結(jié)構(gòu) ?? 座右銘: “不要等到什么都沒有了,才下定決心去做” ??????大家覺不錯的話,就懇求大家點點關(guān)注,點點小愛心,指點指點??????

    2024年02月03日
    瀏覽(23)
  • 玩轉(zhuǎn)動態(tài)內(nèi)存管理以及程序內(nèi)存開辟——【C語言】

    玩轉(zhuǎn)動態(tài)內(nèi)存管理以及程序內(nèi)存開辟——【C語言】

    在之前我們學習過一些內(nèi)存開辟的方法,比如用int float double等等,還有各種類型的數(shù)組。這些都可以開辟內(nèi)存空間。但是它們所開辟的空間都是死的,開辟完之后就不能隨意去更改了,非常的不方便。今天我們要學習一些新的開辟內(nèi)存的方法——動態(tài)內(nèi)存開辟 ? 目錄 1. 為什

    2024年02月14日
    瀏覽(18)
  • 追夢之旅【數(shù)據(jù)結(jié)構(gòu)篇】——詳解C語言動態(tài)實現(xiàn)順序表

    追夢之旅【數(shù)據(jù)結(jié)構(gòu)篇】——詳解C語言動態(tài)實現(xiàn)順序表

    ? ? ??博客昵稱:博客小夢 ??最喜歡的座右銘:全神貫注的上吧?。?! ??作者簡介:一名熱愛C/C++,算法等技術(shù)、喜愛運動、熱愛K歌、敢于追夢的小博主! ??博主小留言:哈嘍! ??各位CSDN的uu們,我是你的博客好友小夢,希望我的文章可以給您帶來一定的幫助,話不

    2024年01月24日
    瀏覽(25)
  • 追夢之旅【數(shù)據(jù)結(jié)構(gòu)篇】——詳解C語言動態(tài)實現(xiàn)帶頭結(jié)點的雙向循環(huán)鏈表結(jié)構(gòu)

    追夢之旅【數(shù)據(jù)結(jié)構(gòu)篇】——詳解C語言動態(tài)實現(xiàn)帶頭結(jié)點的雙向循環(huán)鏈表結(jié)構(gòu)

    ? ? ??博客昵稱:博客小夢 ??最喜歡的座右銘:全神貫注的上吧?。?! ??作者簡介:一名熱愛C/C++,算法等技術(shù)、喜愛運動、熱愛K歌、敢于追夢的小博主! ??博主小留言:哈嘍! ??各位CSDN的uu們,我是你的博客好友小夢,希望我的文章可以給您帶來一定的幫助,話不

    2024年01月17日
    瀏覽(108)
  • 『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑧ - 動態(tài)順序表詳解(附完整源碼)

    『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑧ - 動態(tài)順序表詳解(附完整源碼)

    本章內(nèi)容 寫在前面 1.靜態(tài)與動態(tài)是指什么? 2.動態(tài)順序表結(jié)構(gòu)的定義 3.動態(tài)順序表的函數(shù)接口實現(xiàn) 4.動態(tài)順序表的問題及思考 5.關(guān)于順序表的OJ題 6.OJ答案及解析 1.移除元素 2.刪除有序數(shù)組中的重復項 ?3.合并兩個有序數(shù)組 7.動態(tài)順序表完整源碼 1.SeqList.h 2.SeqList.c ? ? 上一章

    2024年02月16日
    瀏覽(24)
  • C語言數(shù)據(jù)結(jié)構(gòu)-----順序表(多功能動態(tài)順序表的代碼實現(xiàn))

    C語言數(shù)據(jù)結(jié)構(gòu)-----順序表(多功能動態(tài)順序表的代碼實現(xiàn))

    本篇講述了順序表的相關(guān)知識,以及動態(tài)順序表的代碼實現(xiàn)。 順序表和鏈表一般情況下都會叫他們線性表。 線性表(linear list)是n個具有相同特性的數(shù)據(jù)元素的有限序列。線性表是一種在實際中廣泛使 用的數(shù)據(jù)結(jié)構(gòu),常見的線性表:順序表、鏈表、棧、隊列、字符串… 線性

    2024年02月07日
    瀏覽(25)
  • 數(shù)據(jù)結(jié)構(gòu)(C語言實現(xiàn))——棧和隊列的介紹及基本操作的實現(xiàn)(動態(tài)順序棧+鏈隊)

    今天我們來學習另外兩個線性結(jié)構(gòu)——棧和隊列,棧和隊列是操作受限的線性表,因此,可稱為限定性的數(shù)據(jù)結(jié)構(gòu)。 棧:一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行數(shù)據(jù)插入和刪除操作的一端 稱為棧頂,另一端稱為棧底。棧中的數(shù)據(jù)元素遵守

    2023年04月19日
    瀏覽(20)
  • 空間復雜度(數(shù)據(jù)結(jié)構(gòu))

    空間復雜度(數(shù)據(jù)結(jié)構(gòu))

    ? 空間復雜度也是一個數(shù)學表達式,是對一個算法在運行過程中臨時占用存儲空間大小的量度 。 空間復雜度 不是程序占用了多少bytes的空間 ,因為這個也沒太大意義,所以空間復雜度算的是 變量的個數(shù) ??臻g復雜度計算規(guī)則基本跟實踐復雜度類似,也使用大O漸進表示法。

    2024年03月14日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包