您现在的位置是:群英 > 开发技术 > 编程语言
C语言顺序表的实现步骤及代码是什么?
Admin发表于 2021-12-20 17:47:571128 次浏览

    这篇文章给大家分享的是C语言顺序表的实现,本文会有详细的思路及步骤介绍,文中示例代码也介绍的很详细,对大家学习和理解C语言的顺序表的实现有一定的参考价值,那么接下来感兴趣的朋友就跟随小编一起学习一下吧。

    一、思维导图

    二、步骤

    1.初始化

    代码如下:

    void ListInit(SeqList *L)
    {
    	L->size = 0;
    }
    

    2.求表长

    代码如下:

    int ListLength(SeqList L)
    {
    	return L.size;
    }
    

    3.插入数据元素

    代码如下:

    int ListInsert(SeqList *L, int i, DataType x)
    {
    	int j;
    	if (L->size >= MaxSize)
    	{
    		printf("顺序表已满,插入失败!!!\n");
    		return 0;
    	}
    	else if (i<0 || i>L->size)
    	{
    		printf("参数i不合法,插入失败!!!\n");
    		return 0;
    	}
    	else
    	{
    		for (j = L->size; j > i; j--)
    			L->list[j] = L->list[j - 1];
    		L->list[i] = x;
    		L->size++;
    		return 1;
    	}
    }
    

    4.删除数据元素

    代码如下:

    int ListInsert(SeqList *L, int i, DataType x)
    {
    	int j;
    	if (L->size >= MaxSize)
    	{
    		printf("顺序表已满,插入失败!!!\n");
    		return 0;
    	}
    	else if (i<0 || i>L->size)
    	{
    		printf("参数i不合法,插入失败!!!\n");
    		return 0;
    	}
    	else
    	{
    		for (j = L->size; j > i; j--)
    			L->list[j] = L->list[j - 1];
    		L->list[i] = x;
    		L->size++;
    		return 1;
    	}
    }
    

    5.取出数据元素

    按位查找

    代码如下:

    int ListGet(SeqList L, int i, DataType *x)
    {
    	if (L.size <= 0)
    	{
    		printf("顺序表已空,取出元素失败!!!\n");
    		return 0;
    	}
    	else if (i < 0 || i >= L.size)
    	{
    		printf("参数i不合法,取出元素失败!!!\n");
    		return 0;
    	}
    	else
    	{
    		*x = L.list[i];
    		return 1;
    	}
    }
    

    按位查找

    代码如下:

    int ListGetZ(SeqList L, DataType x, int *i)
    {
    	int j;
    	for (j = 0; j < ListLength(L); j++)
    	{
    		if (L.list[j] == x)
    		{
    			*i = j;
    			return 1;
    		}
    	}
    	return 0;
    }
    

    所有代码

    #include <stdio.h>
    #define MaxSize 1024 //数组能存储的最大最大元素个数
    typedef int DataType; //存储数据元素的数据类型
    typedef struct
    {
    	DataType list[MaxSize];
    	int size; //当前存储的数据元素个数
    }SeqList;
    //初始化
    void ListInit(SeqList *L)
    {
    	L->size = 0;
    }
    //求表长
    int ListLength(SeqList L)
    {
    	return L.size;
    }
    //插入数据元素
    int ListInsert(SeqList *L, int i, DataType x)
    {
    	int j;
    	if (L->size >= MaxSize)
    	{
    		printf("顺序表已满,插入失败!!!\n");
    		return 0;
    	}
    	else if (i<0 || i>L->size)
    	{
    		printf("参数i不合法,插入失败!!!\n");
    		return 0;
    	}
    	else
    	{
    		for (j = L->size; j > i; j--)
    			L->list[j] = L->list[j - 1];
    		L->list[i] = x;
    		L->size++;
    		return 1;
    	}
    }
    //删除数据元素
    int ListDelete(SeqList *L, int i, DataType *x)
    {
    	int j;
    	if (L->size <= 0)
    	{
    		printf("顺序表已空,删除失败!!!\n");
    		return 0;
    	}
    	else if (i < 0 || i >= L->size)
    	{
    		printf("参数i不合法,删除失败!!!\n");
    		return 0;
    	}
    	else
    	{
    		*x = L->list[i];
    		for (j = i; j < L->size - 1; j++)
    			L->list[j] = L->list[j + 1];
    		L->size--;
    		return 1;
    	}
    }
    //取出数据元素
    //按位查找
    void ListGet(SeqList L, int i, DataType *x)
    {
    	if (L.size <= 0)
    	{
    		printf("顺序表已空,取出元素失败!!!\n");
    		return 0;
    	}
    	else if (i < 0 || i >= L.size)
    	{
    		printf("参数i不合法,取出元素失败!!!\n");
    		return 0;
    	}
    	else
    	{
    		*x = L.list[i];
    		return 1;
    	}
    }
    //安值查找
    int ListGetZ(SeqList L, DataType x, int *i)
    {
    	int j;
    	for (j = 0; j < ListLength(L); j++)
    	{
    		if (L.list[j] == x)
    		{
    			*i = j;
    			return 1;
    		}
    	}
    	return 0;
    }
    int main()
    {
    	SeqList L;
    	int i, x;
    	ListInit(&L);
    	for (i = 0; i < 10; i++)
    		ListInsert(&L, i, i + 10);
    	ListDelete(&L, 4, &x);
    	for (i = 0; i < ListLength(L); i++)
    	{
    		ListGet(L, i, &x);
    		printf("%d ", x);
    	}
    	system("pause");
    	return 0;
    }
    

    总结

        关于C顺序表的实现就介绍到这,上述示例具有一定的借鉴价值,感兴趣的朋友可以参考,希望能对大家有帮助,想要了解更多C语言的内容,大家可以关注其它的相关文章。

    文本转载自PHP中文网

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

    相关信息推荐
    2022-05-31 17:39:47 
    摘要:java计算两个时间是否相等的方法:首先引入hutool的jar包,并创建时间字符串时间;然后判断这两个时间是否一致,代码为【DateUtil.isSameTime(startTime, endTime)】;最后运行结果即可。
    2022-05-17 17:06:09 
    摘要:线程在程序中是独立的、并发的执行流。与分隔的进程相比,进程中线程之间的隔离程度要小,它们共享内存、文件句柄和其他进程应有的状态。线程的划分尺度小于进程,使多线程程序的并发性高。进程在执行过程中拥有独立内存单元,而多个线程共享内存,从而提升程序运行效率
    2021-12-25 17:53:16 
    摘要:这篇文章给大家分享的是PHP如何实现图片压缩功能。小编觉得挺实用的,在很多使用得到图片的常见都能使用到,因此分享给大家做个参考,文中示例代码介绍的很详细,感兴趣的朋友接下来一起跟随小编看看吧。
    云活动
    推荐内容
    热门关键词
    热门信息
    群英网络助力开启安全的云计算之旅
    立即注册,领取新人大礼包
    • 联系我们
    • 24小时售后:4006784567
    • 24小时TEL :0668-2555666
    • 售前咨询TEL:400-678-4567

    • 官方微信

      官方微信
    Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
    增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
    免费拨打  400-678-4567
    免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
    微信公众号
    返回顶部
    返回顶部 返回顶部