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语言)

(一)静态顺序表的实现 SeqList.h文件  #pragma once #define MAX_SIZE 1000 typedef int DataType; typedef unsigne...
  • XHfight
  • XHfight
  • 2016年06月01日 00:05
  • 706

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

点击打开链接(静态实现版) 头文件: #define _CRT_SECURE_NO_WARNINGS 1 #ifndef _SEQLIST_H__ #define _SEQLIST_H__ #inc...

静态与动态顺序表操作的C语言实现

1.操作静态顺序表#include #include #define MAXSIZE 10//插入void InsertElem(int sqlist[], int *len, int i, int ...
  • IT_10
  • IT_10
  • 2016年09月26日 14:18
  • 387

C语言:动态顺序表的简单实现

动态顺序表的实现: 头文件 SeqList.h#ifndef __SeqList__ #define __SeqList__ #include #include #include #...

动态顺序表----C语言实现

typedef int DataType; typedef struct SeqListD { DataType* array; size_t capacity; // 空间的实际大小--存...

C语言实现通讯录—动态顺序表

之前我有一篇博客写的是静态顺序表实现通讯录,但是静态顺序表有一个很大的缺陷就是,如果存满了,就不能在继续存储了。 为了改进之前的版本,本次将实现动态顺序表的通讯录,可以动态开辟空间,不用担心空间存储...
  • DY_1024
  • DY_1024
  • 2017年12月14日 15:03
  • 17

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

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

利用C语言实现动态顺序表

利用C语言实现动态顺序表1. 数据类型及动态分配顺序存储结构#define INIT_SIZE 10                           //当前默认有效值#define DEFAUL...
  • Comedly
  • Comedly
  • 2016年08月01日 00:32
  • 276

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

数据结构: typedef int DataType,*pDataType;typedef struct Seqlist { pDataType pdata;//指向动态开辟的区域 i...

c语言动态顺序表的实现

动态顺序表是在静态顺序表的基础上优化更改的 1.其中将静态顺序表中的数组数据类型改成了指针类型方便内存的开辟 2.多增加了一个容量的变量来表示顺序表的容量 3.初始化的时候需要给*data动态开辟空间...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言:【动态顺序表】动态顺序表的初始化、打印、尾插PushBack、尾删PopBack
举报原因:
原因补充:

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