首页后端开发其他后端知识C语言顺序表的实现步骤及代码是什么?

C语言顺序表的实现步骤及代码是什么?

时间2024-03-29 01:10:03发布访客分类其他后端知识浏览772
导读:这篇文章给大家分享的是C语言顺序表的实现,本文会有详细的思路及步骤介绍,文中示例代码也介绍的很详细,对大家学习和理解C语言的顺序表的实现有一定的参考价值,那么接下来感兴趣的朋友就跟随小编一起学习一下吧。 一、思维导图 二、步骤...

这篇文章给大家分享的是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 (i0 || 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 (i0 || 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 (i0 || 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中文网

    声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


    若转载请注明出处: C语言顺序表的实现步骤及代码是什么?
    本文地址: https://pptw.com/jishu/655320.html
    C语言中的常见排序算法怎样实现?一文带你了解 用C语言怎样实现单链表,思路步骤是什么?

    游客 回复需填写必要信息