IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> C语言-数据结构-可变长顺序表的初始化,插入和删除 -> 正文阅读

[数据结构与算法]C语言-数据结构-可变长顺序表的初始化,插入和删除

问题描述:

实现可变长顺序表的建表过程。任务要求:通过顺序表的初始化、插入算法,实现顺序表的建表,并依次输出顺序表元素。

【输入形式】

第一行输入整数N(1<=N<=100),表示创建长度为N的顺序表;

第二行输入N个整数,表示顺序表的N个元素,依次放入表中;

【输出形式】

依次输出顺序表的全部元素。(以空格分隔)

【样例输入】

5

1 2 3 4 5

【样例输出】

1 2 3 4 5

实现可变长顺序表要定义:初始的存储空间空间(INIT_SIZE)和空间再分配的增量大小(INCREN)

#include <stdio.h>
#include <stdlib.h>
#define INIT_SIZE 5       //初始分配的存储空间长度
#define INCREM 3          //存储空间再分配的增量
#define OK 1
#define ERROR 0

下面定义结构体类型

typedef int ElemType;
/*顺序表结构*/
typedef struct Sqlist{
	ElemType *slist;
	int length;
	int listsize;
}Sqlist;

顺序表的初始化

int initSq(Sqlist *L)
{
    L->slist=(ElemType*)malloc(INIT_SIZE*sizeof(ElemType));
    if(!L->slist)return 0;     //初始化失败返回0
    L->length=0;               //置为空表长度为0
    L->listsize=INIT_SIZE;     //设置初始空间容量
    return 1;
}

接下来是插入和删除操作

/*在i位置插入元素:插入成功返回1,不成功返回0*/
int insertSq(Sqlist *L, int i,ElemType e)
{
   if(i<0||i>L->length+1)return 0;     //插入位置不正确返回0
    if(L->length+1>L->listsize)        //当前储存空间已满,进行空间增量
    {
        L->slist=(ElemType*)realloc(L->slist,(L->listsize+INCREM)*sizeof(ElemType));
        if(!L->slist)return 0;         //申请存储空间失败
        L->listsize+=INCREM;
    }
    int j;
    for(j=L->length;j>i;j--)     //插入位置后数据元素依次后移
    {
        L->slist[j]=L->slist[j-1];
    }
    L->slist[i]=e;     //插入新数据元素
    L->length++;       //当前表长加一
    return 1;
}
/*输出顺序表元素*/
void printSq(Sqlist *L)
{
    int i;
    for(i=0;i<L->length;i++)
    {
        printf("%d ",L->slist[i]);     //依次输出表中元素
    }
    printf("\n");
}

最后实现完整代码查看结果

#include <stdio.h>
#include <stdlib.h>
#define INIT_SIZE 5       //初始分配的存储空间长度
#define INCREM 3          //存储空间再分配的增量
#define OK 1
#define ERROR 0
typedef int ElemType;
/*顺序表结构*/
typedef struct Sqlist{
	ElemType *slist;
	int length;
	int listsize;
}Sqlist;
int initSq(Sqlist *L)
{
    L->slist=(ElemType*)malloc(INIT_SIZE*sizeof(ElemType));
    if(!L->slist)return 0;     //初始化失败返回0
    L->length=0;               //置为空表长度为0
    L->listsize=INIT_SIZE;     //设置初始空间容量
    return 1;
}
/*在i位置插入元素:插入成功返回1,不成功返回0*/
int insertSq(Sqlist *L, int i,ElemType e)
{
   if(i<0||i>L->length+1)return 0;     //插入位置不正确返回0
    if(L->length+1>L->listsize)        //当前储存空间已满,进行空间增量
    {
        L->slist=(ElemType*)realloc(L->slist,(L->listsize+INCREM)*sizeof(ElemType));
        if(!L->slist)return 0;         //申请存储空间失败
        L->listsize+=INCREM;
    }
    int j;
    for(j=L->length;j>i;j--)     //插入位置后数据元素依次后移
    {
        L->slist[j]=L->slist[j-1];
    }
    L->slist[i]=e;     //插入新数据元素
    L->length++;       //当前表长加一
    return 1;
}
/*输出顺序表元素*/
void printSq(Sqlist *L)
{
    int i;
    for(i=0;i<L->length;i++)
    {
        printf("%d ",L->slist[i]);     //依次输出表中元素
    }
    printf("\n");
}
int main()
{
    Sqlist sq;
    ElemType e;
    int n;
    if(initSq(&sq)){
       scanf("%d",&n);
       /*补充代码,实现n个元素顺序表的创建*/
       int i;
       for(i=0;i<n;i++)
       {
           scanf("%d",&e);
           insertSq(&sq,i,e);
       }
       printSq(&sq);
    }
    return 0;
}

运行结果

?

?

?

?

?

?

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-29 13:18:32  更:2021-10-29 13:23:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:54:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码