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

【C語言數(shù)據(jù)結(jié)構(gòu)】模擬·順序表·總項(xiàng)目實(shí)現(xiàn)

這篇具有很好參考價(jià)值的文章主要介紹了【C語言數(shù)據(jù)結(jié)構(gòu)】模擬·順序表·總項(xiàng)目實(shí)現(xiàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【C語言數(shù)據(jù)結(jié)構(gòu)】模擬·順序表·總項(xiàng)目實(shí)現(xiàn),數(shù)據(jù)結(jié)構(gòu)與算法,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???? ?? ??
??個(gè)人主頁 :阿然成長日記 ??點(diǎn)擊可跳轉(zhuǎn)
?? 個(gè)人專欄: ??數(shù)據(jù)結(jié)構(gòu)與算法??C語言進(jìn)階
?? 不能則學(xué),不知?jiǎng)t問,恥于問人,決無長進(jìn)
?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??

前言

我在上一篇博客中,詳細(xì)講解啦每一個(gè)函數(shù)的實(shí)現(xiàn)思路和代碼展現(xiàn),在這一篇博客中,我將像是做項(xiàng)目一樣,去實(shí)現(xiàn)順序表的總體實(shí)現(xiàn)。

一、項(xiàng)目源文件構(gòu)成

該項(xiàng)目由三部分組成
1?? 用來存放庫函數(shù),宏定義,函數(shù)申明等的一個(gè)頭文件:SqList.h
2?? 主函數(shù)的所在文件 test.c
3??各個(gè)函數(shù)的實(shí)現(xiàn),我們主要在此完成函數(shù)的代碼編寫:SqList.c

二、菜單

建立一個(gè)菜單是很重要的,菜單能夠?qū)崿F(xiàn)和用戶的交互,以便于用戶的操作。

代碼如下:

void meun()
{
	printf("**************************************************\n");
	printf("*    1.順序表尾插            2.順序表尾刪        *\n");
	printf("*    3.順序表頭插            4.順序表頭刪        *\n");
	printf("*    5.順序表的查找          6.在pos位置插入x    *\n");
	printf("*    7.刪除pos位置的值       8.順序表的打印      *\n");
	printf("*    0.退出                                      *\n");
	printf("**************************************************\n");
}

三、順序表結(jié)構(gòu)體

typedef int SLDataType;

typedef struct SeqList
{
	SLDataType* array;
	int size;//當(dāng)前存儲(chǔ)個(gè)數(shù)
	int capacity;//空間大小

}SL;

四、源文件展示

下面是整個(gè)項(xiàng)目的代碼:

1.SqList.h

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>

#define INT_SIZE 2

typedef int SLDataType;

typedef struct SeqList
{
	SLDataType* array;
	int size;//當(dāng)前存儲(chǔ)個(gè)數(shù)
	int capacity;//空間大小

}SL;

//順序表的初始化
void SeqListInit(SL* ps);


// 順序表尾插
void SeqListPushBack(SL* ps, SLDataType x);


// 順序表尾刪
void SeqListPopBack(SL* ps);


// 順序表頭插
void SeqListPushFront(SL* p, SLDataType x);


// 順序表頭刪
void SeqListPopFront(SL* p);


// 順序表查找
int SeqListFind(SL* p, SLDataType x);


// 順序表在pos位置插入x
void SeqListInsert(SL* p, size_t pos, SLDataType x);


// 順序表刪除pos位置的值
void SeqListErase(SL* p, size_t pos);


// 順序表銷毀
void SeqListDestory(SL* p);


// 順序表打印
void SeqListPrint(SL* p);
 

2.SqList.c

#define _CRT_SECURE_NO_WARNINGS 1
#include"SqList.h"
//順序表的初始化
void SeqListInit(SL* ps)
{
	ps->array = (SLDataType*)malloc(sizeof(SLDataType)*4);
	if (ps->array == NULL)
	{
		perror("malloc failed\n");
		exit(-1);
	}
	ps->size = 0;
	ps->capacity = 4;
}


// 檢查空間,如果滿了,進(jìn)行增容
int CheckCapacity(SL* ps)
{
	if (ps->size == ps->capacity)
	{
		SLDataType* tmp = (SLDataType*)realloc(ps->array, (ps->capacity + INT_SIZE)*sizeof(SLDataType));
		if (tmp == NULL)
		{
			perror("擴(kuò)容失敗!\n");
			return 0;
		}
		else
		{
			ps->array = tmp;
			ps->capacity += INT_SIZE;
			printf("擴(kuò)容成功\n");
			return 1;
		}	
	}
	return 1;
}



// 順序表銷毀
void SeqListDestory(SL* ps)
{
	free(ps->array);
	ps->array = NULL;
	ps->capacity = 0;
	ps->size = 0;
}


// 順序表尾插
void SeqListPushBack(SL* ps, SLDataType x)
{
	if (CheckCapacity(ps) == 0)
	{
		printf("空間已滿,插入失?。n");
	}
	if (CheckCapacity(ps) == 1)
	{
		ps->array[ps->size] = x;
		ps->size ++;
	}
}


// 順序表尾刪
void SeqListPopBack(SL* ps)
{
	if (ps->size < 1)
	{
		printf("已經(jīng)為空,無元素可刪除\n");
		return;
	}
	ps->array[ps->size - 1] = 0;
	ps->size--;
}

// 順序表頭插
void SeqListPushFront(SL* ps, SLDataType x)
{
	//判斷空間是否夠。
	
	//先挪動(dòng)
	if (CheckCapacity(ps) == 0)
	{
		printf("空間已滿,頭插入失?。n");
	}
	if (CheckCapacity(ps) == 1)
	{
	int end = ps->size - 1;
	while (end>=0)
	{
		ps->array[end + 1] = ps->array[end];
		end--;
	}
	ps->array[0] = x;
	ps->size++;

	}
}


// 順序表頭刪
void SeqListPopFront(SL* ps)
{
	int n = 1;
	while (n < ps->size)
	{
		ps->array[n - 1] = ps->array[n];
		n++;
	}
	ps->size--;
}

// 順序表打印
void SeqListPrint(SL* ps)
{
	for (int i = 0; i < ps->size; i++)
	{
		printf("%d ", ps->array[i]);
	}
	printf("\n");
}


// 順序表查找
int SeqListFind(SL* ps, SLDataType x)
{
	int i = 0,count=0;
	for (i = 0; i < ps->size - 1; i++)
	{
		if (x == ps->array[i])
		{
			printf("找到啦!下標(biāo)是%d\n",i);
			count++;
			return i;
		}
	}
	if (count == 0)
	{
		printf("沒找到!\n");
		return;
	}
}


// 順序表在pos位置插入x
void SeqListInsert(SL* ps, size_t pos, SLDataType x)
{
	assert(pos>=0&&pos<ps->size);
	if (CheckCapacity(ps) == 0)
	{
		printf("空間已滿,插入失??!\n"); 
	}
	if (CheckCapacity(ps) == 1)
	{
		int end = ps->size - 1 ;
		while (end >= pos)
		{
			ps->array[end + 1] = ps->array[end];
			end--;
		}
		ps->array[pos] = x;
		ps->size++;
	}
}



// 順序表刪除pos位置的值
void SeqListErase(SL* ps, size_t pos)
{
	assert(pos >= 0 && pos < ps->size);
	int n = pos + 1;
	while (n <= ps->size - 1)
	{
		ps->array[n - 1] = ps->array[n];
		n++;
	}
	ps->size--;
}

3.test.c

#define _CRT_SECURE_NO_WARNINGS 1
#include"SqList.h"

void meun()
{
	printf("**************************************************\n");
	printf("*    1.順序表尾插            2.順序表尾刪        *\n");
	printf("*    3.順序表頭插            4.順序表頭刪        *\n");
	printf("*    5.順序表的查找          6.在pos位置插入x    *\n");
	printf("*    7.刪除pos位置的值       8.順序表的打印      *\n");
	printf("*    0.退出                                      *\n");
	printf("**************************************************\n");
}
int main()
{
	int x,pos;
	SL s;
	//初始化
	SeqListInit(&s);
	int input = 0;
	do
	{
		meun();
		printf("請(qǐng)輸入你的選擇:\n");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			printf("請(qǐng)輸入要尾插的值:");
			scanf("%d", &x);
			SeqListPushBack(&s, x);
			break;
		case 2:
			SeqListPopBack(&s);
			break;
		case 3:
			printf("請(qǐng)輸入要頭插的值:");
			scanf("%d", &x);
			SeqListPushFront(&s,x);
			break;
		case 4:SeqListPopFront(&s);
			break;
		case 5:
			printf("請(qǐng)輸入要查找的值:");
			scanf("%d", &x);
			SeqListFind(&s,x); 
			break;
		case 6:
		{
			printf("請(qǐng)輸入要插入的位置和數(shù)據(jù)(空格分開):");
			scanf("%d %d", &pos,&x);
			SeqListInsert(&s, pos, x);
			break;
		}
		case 7:
			printf("請(qǐng)輸入要?jiǎng)h除的位置:");
			scanf("%d", &pos);
			SeqListErase(&s,pos); 
			break;
		case 8:
			 SeqListPrint(&s);
			 break;
		case 0:
			SeqListDestory(&s);
			break;
		default:printf("輸入有誤,請(qǐng)重新輸入:\n");
		}
	}while (input);
}

五、運(yùn)行截圖

1.順序表尾插,頭插展示

【C語言數(shù)據(jù)結(jié)構(gòu)】模擬·順序表·總項(xiàng)目實(shí)現(xiàn),數(shù)據(jù)結(jié)構(gòu)與算法,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

2.順序表的頭刪

【C語言數(shù)據(jù)結(jié)構(gòu)】模擬·順序表·總項(xiàng)目實(shí)現(xiàn),數(shù)據(jù)結(jié)構(gòu)與算法,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

3.順序表的尾刪

【C語言數(shù)據(jù)結(jié)構(gòu)】模擬·順序表·總項(xiàng)目實(shí)現(xiàn),數(shù)據(jù)結(jié)構(gòu)與算法,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

4.順序表的查找

【C語言數(shù)據(jù)結(jié)構(gòu)】模擬·順序表·總項(xiàng)目實(shí)現(xiàn),數(shù)據(jù)結(jié)構(gòu)與算法,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

5.在pos位置插入x

【C語言數(shù)據(jù)結(jié)構(gòu)】模擬·順序表·總項(xiàng)目實(shí)現(xiàn),數(shù)據(jù)結(jié)構(gòu)與算法,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

6.在pos位置刪除元素

【C語言數(shù)據(jù)結(jié)構(gòu)】模擬·順序表·總項(xiàng)目實(shí)現(xiàn),數(shù)據(jù)結(jié)構(gòu)與算法,c語言,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

總結(jié):

本次項(xiàng)目當(dāng)中遇到許多之氣沒有注意到的問題,尤其是數(shù)組越界問題等等,在接下來學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)預(yù)算法是非常重要的,??相信自己,踏踏實(shí)實(shí)走好每一步,夢(mèng)想終會(huì)成為現(xiàn)實(shí)! ??文章來源地址http://www.zghlxwxcb.cn/news/detail-614541.html

到了這里,關(guān)于【C語言數(shù)據(jù)結(jié)構(gòu)】模擬·順序表·總項(xiàng)目實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)順序表(C語言實(shí)現(xiàn))

    數(shù)據(jù)結(jié)構(gòu)順序表(C語言實(shí)現(xiàn))

    ????????從本章開始就是開始數(shù)據(jù)結(jié)構(gòu)的開端,本章將會(huì)寫出數(shù)據(jù)結(jié)構(gòu)中的順序表的代碼實(shí)現(xiàn),多會(huì)以注釋的方法來描述一些細(xì)節(jié)(注釋是我們程序員必須常用的工具)。 ? ? ? ? 話不多說安全帶系好,發(fā)車?yán)玻ńㄗh電腦觀看)。 附:紅色,部分為重點(diǎn)部分;藍(lán)顏色為需

    2024年02月10日
    瀏覽(27)
  • 【數(shù)據(jù)結(jié)構(gòu)】C語言實(shí)現(xiàn)順序表

    【數(shù)據(jù)結(jié)構(gòu)】C語言實(shí)現(xiàn)順序表

    順序表是用順序存儲(chǔ)方式存放的線性表(可以理解為數(shù)組的存儲(chǔ)方式),表中的元素在內(nèi)存中彼此相鄰。 靜態(tài)存儲(chǔ):在定義時(shí)就確定了順序表的大小,并且之后順序表的大小不會(huì)改變(即使之后空間不夠用了,也無法增加) 動(dòng)態(tài)存儲(chǔ):線性表的大小可以根據(jù)需要更改(順序

    2024年02月08日
    瀏覽(22)
  • 順序表—C語言實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)

    順序表—C語言實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)

    本期帶大家一起來用C語言代碼實(shí)現(xiàn)順序表?????? 順序表是一段物理地址連續(xù)的存儲(chǔ)單元,依次存儲(chǔ)數(shù)據(jù)元素的線性結(jié)構(gòu)。分為靜態(tài)順序表與動(dòng)態(tài)順序表。 ?? ?? ?? 靜態(tài)順序表 :使用定長數(shù)組用來存儲(chǔ)數(shù)據(jù) 優(yōu)點(diǎn) :操作簡(jiǎn)單,代碼實(shí)現(xiàn)容易 缺點(diǎn) :定長數(shù)組很受限制,數(shù)

    2023年04月24日
    瀏覽(29)
  • 【數(shù)據(jù)結(jié)構(gòu)】C語言實(shí)現(xiàn)順序表(超級(jí)詳細(xì))

    目錄 概念及結(jié)構(gòu) 接口函數(shù)實(shí)現(xiàn) 順序表的初始化 容量判斷 ?順序表尾插 ?順序表尾刪 順序表頭插 順序表頭刪 順序表查找 順序表指定位置插入 順序表指定位置刪除 打印順序表 銷毀順序表 順序表完整代碼 順序表作為線性表的一種,它是用一段 物理地址連續(xù)的存儲(chǔ)單元依次

    2024年04月10日
    瀏覽(17)
  • 【數(shù)據(jù)結(jié)構(gòu)初階】二、 線性表里的順序表(C語言實(shí)現(xiàn)順序表)

    【數(shù)據(jù)結(jié)構(gòu)初階】二、 線性表里的順序表(C語言實(shí)現(xiàn)順序表)

    ========================================================================= 相關(guān)代碼gitee自取 : C語言學(xué)習(xí)日記: 加油努力 (gitee.com) ?========================================================================= 接上期 : 【數(shù)據(jù)結(jié)構(gòu)初階】一. 復(fù)雜度講解_高高的胖子的博客-CSDN博客 ?=======================================

    2024年02月08日
    瀏覽(27)
  • 【數(shù)據(jù)結(jié)構(gòu)】線性表的順序存儲(chǔ)結(jié)構(gòu)及實(shí)現(xiàn)——C語言版

    【數(shù)據(jù)結(jié)構(gòu)】線性表的順序存儲(chǔ)結(jié)構(gòu)及實(shí)現(xiàn)——C語言版

    線性表的順序存儲(chǔ)結(jié)構(gòu)稱為 順序表 ,其基本思想是 用一段地址連續(xù)的存儲(chǔ)單元一次存儲(chǔ)線性表的數(shù)據(jù)元素。 設(shè)順序表的每個(gè)元素占用 c 個(gè)存儲(chǔ)單元,則第 i 個(gè)元素的存儲(chǔ)地址為: 所以, 只要確定了存儲(chǔ)順序表的起始地址(即基地址),計(jì)算任意一個(gè)元素的存儲(chǔ)地址的時(shí)間

    2024年03月15日
    瀏覽(33)
  • 數(shù)據(jù)結(jié)構(gòu)初階之順序表(C語言實(shí)現(xiàn))

    數(shù)據(jù)結(jié)構(gòu)初階之順序表(C語言實(shí)現(xiàn))

    順序表是數(shù)據(jù)結(jié)構(gòu)里面很基礎(chǔ)的一類,它是線性表的一種,其它線性表還有鏈表、棧和隊(duì)列等,今天來和博主一起學(xué)習(xí)關(guān)于順序表的知識(shí)吧。 順序表,它分為兩類: 動(dòng)態(tài)順序表 和 靜態(tài)順序表 ,這兩個(gè)表的區(qū)別就是 前者的空間不固定 ,是 支持?jǐn)U容 的,后者的 空間是固定

    2024年02月03日
    瀏覽(24)
  • 【數(shù)據(jù)結(jié)構(gòu)】順序表基本操作的實(shí)現(xiàn)(C語言)

    【數(shù)據(jù)結(jié)構(gòu)】順序表基本操作的實(shí)現(xiàn)(C語言)

    ?? 作者簡(jiǎn)介:一名在后端領(lǐng)域?qū)W習(xí),并渴望能夠?qū)W有所成的追夢(mèng)人。 ?? 個(gè)人主頁:蝸牛牛啊 ?? 系列專欄:??數(shù)據(jù)結(jié)構(gòu)、??C++ ?? 學(xué)習(xí)格言:博觀而約取,厚積而薄發(fā) ?? 歡迎進(jìn)來的小伙伴,如果小伙伴們?cè)趯W(xué)習(xí)的過程中,發(fā)現(xiàn)有需要糾正的地方,煩請(qǐng)指正,希望能夠與

    2024年02月16日
    瀏覽(25)
  • 【數(shù)據(jù)結(jié)構(gòu)】鏈表OJ題(順序表)(C語言實(shí)現(xiàn))

    【數(shù)據(jù)結(jié)構(gòu)】鏈表OJ題(順序表)(C語言實(shí)現(xiàn))

    ???????????????? ???????????????? ???????????????????????????????? ???????????????????????????????? ???? 追風(fēng)趕月莫停留 ???? ???????????????????????????????? ???? 平蕪盡處是春山

    2024年02月05日
    瀏覽(23)
  • 數(shù)據(jù)結(jié)構(gòu)之順序表的實(shí)現(xiàn)(C語言版)

    數(shù)據(jù)結(jié)構(gòu)之順序表的實(shí)現(xiàn)(C語言版)

    ? ? ?Hello, 大家好,我是一代,今天給大家?guī)碛嘘P(guān)順序表的有關(guān)知識(shí) ? ? ?所屬專欄:數(shù)據(jù)結(jié)構(gòu) ? ? ?創(chuàng)作不易,望得到各位佬們的互三呦 1.首先在講順序表之前我們先來了解什么是數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)結(jié)構(gòu)是由“數(shù)據(jù)”和“結(jié)構(gòu)”兩詞組合?來。 什么是數(shù)據(jù)?常見的數(shù)值1、

    2024年04月25日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包