C语言:【动态顺序表】动态顺序表的初始化、打印、尾插PushBack、尾删PopBack

原创 2016年05月30日 17:17:27
#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 PopBack(SeqList *Seq)
{
    assert(Seq);
    if (Seq->size <= 0)
    {
        printf("当前顺序表为空!无法继续删除\n");
        return;
    }
    --Seq->size;
    printf("\n");
}


//打印动态顺序表
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);

    PopBack(&Seq);
    PrintSeq(&Seq);

    DestroySeq(&Seq);
}


int main()
{
    Test();
    system("pause");
    return 0;
}


本文出自 “Han Jing's Blog” 博客,请务必保留此出处http://10740184.blog.51cto.com/10730184/1743504

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

线性表之顺序存储结构(C语言动态数组实现)

线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3….an)链式...

C语言实现动态顺序表

1、用于存放声明的头文件#pragma once //避免重复引入头文件,作用于预编译指令几乎相同#define _CRT_SECURE_NO_WARNINGS 1 #include #inclu...

C语言实现动态顺序表

C语言实现动态顺序表

数据结构C语言版--动态顺序表的基本功能实现(二)

/* * 若各个方法结构体变量参数为: &L(即地址符加变量)则结构体变量访问结构成员变量时使用"." * 若为:*L(即取地址符加变量)则结构体变量访问结构体成员变量使用"->" * malloc(...
  • T_P_F
  • T_P_F
  • 2017-05-20 23:42
  • 284

c语言顺序表动态实现

动态版与静态版区别:当插入数据时内存空间不够时,动态版的顺序表可以再重新开辟一块更大的空间用来存放数据。 顺序表的优缺点:顺序表的优点是便于随机存储,缺点是不便于插入删除等操作,因为插入删除一个元素...

C语言:动态顺序表的增删查改,数据结构

顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连...

C语言 顺序表的实现 (动态)

上一篇博客写了顺序表的静态实现,即指定大小的顺序表,这篇则给出动态实现的顺序表,即可以改变大小的顺序表。 给出顺序表的定义: typedef int DataType; typedef struct ...

线性表之顺序存储结构(C语言动态数组实现)

线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) ...

老郭带你学数据结构(C语言系列)2-线性表之动态顺序表

线性动态表的实现

动态顺序表(C语言实现)

数据结构: typedef int DataType,*pDataType;typedef struct Seqlist { pDataType pdata;//指向动态开辟的区域 i...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)