#include<stdio.h> #include<stdlib.h> #include<assert.h> #include<string.h> #include<malloc.h> typedef int DateType; typedef struct SeqList { DateType *arr; size_t capacility; size_t size; }SeqList; //创建空间 void CheckCapa(SeqList *Seq) { assert(Seq); if (Seq->size >= Seq->capacility) { Seq->capacility = 2 * Seq->capacility + 3; Seq->arr = (DateType*)realloc(Seq->arr, Seq->capacility * sizeof(DateType)); } } //初始化动态顺序表 void initSeqList(SeqList *Seq) { Seq->arr = NULL/* malloc(sizeof(DateType) * 3)*/; Seq->capacility = 0; Seq->size = 0; } //销毁空间 void DestroySeq(SeqList *Seq) { Seq->capacility = 0; Seq->size = 0; free(Seq->arr); Seq->arr = NULL; } //尾插 void PushBack(SeqList *Seq,DateType x) { assert(Seq); CheckCapa(Seq); Seq->arr[Seq->size++] = x; } //插入 void Insert(SeqList *Seq,size_t pos, DateType x) { assert(Seq); assert(pos < Seq->size); CheckCapa(Seq); //思路:插入时将pos+1之后元素往后移腾出一个位置,pos位置放入x。 //鉴于标号从0开始,先移动再加加size。 int index = Seq->size; for (; index >= pos + 1;index--) { Seq->arr[index] = Seq->arr[index - 1]; } Seq->arr[pos] = x; Seq->size++; } //查找 int Find(SeqList *Seq, DateType x) { assert(Seq); int index = 0; for (; index < Seq->size; index++) { if (Seq->arr[index] == x) { return index; } } return -1; } //打印动态顺序表 void PrintSeq(SeqList *Seq) { assert(Seq); int index = 0; if (Seq->size == 0) { printf("当前顺序表为空!\n"); return; } for (index = 0; index < Seq->size; index++) { printf("%d->", Seq->arr[index]); } printf("\n"); } void Test() { SeqList Seq; initSeqList(&Seq); PushBack(&Seq, 1); PushBack(&Seq, 2); PushBack(&Seq, 3); PushBack(&Seq, 4); PrintSeq(&Seq); Insert(&Seq, 2, 10); PrintSeq(&Seq); int ret = Find(&Seq, 20); if (ret == -1) { printf("not exist!\n"); } else { printf("%d\n"); } DestroySeq(&Seq); }
C语言:【动态顺序表】动态顺序表的在指定位置插入元素Insert,以及指定元素Find
原创
©著作权归作者所有:来自51CTO博客作者韩静静的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
顺序表的动态分配(C语言版)
顺序表的动态分配代码实录
顺序表 动态分配 C语言 -
1.顺序表的实现——C语言
顺序表各种操作的代码实现
顺序表 冒泡排序 算法 随机数 -
顺序表指定位置插入元素
问题描述:本题要求实现一个函数,在顺序表的第i个位置插入一个新的数据元
顺序表指定位置插入元素 顺序表 函数返回值 List -
顺序表指定元素删除
问题描述:本题要求实现一个函数,要求将顺序表的第i个元素删掉
顺序表指定元素删除 List #include 指定位置 -
【C++】实现动态顺序表的PushBack(),PopBack(),PushFront(),PopFront(),Find(),Insert
建立源文件SeqList.cpp:#define _CRT_SECURE_NO_WARNINGS 1#include"SeqList.h"int main(){ Test(); system("pause"); re
【C+++ 实现动态顺序表的PushBack() PopBack() PushFront() PopFront() Find()