c/c++开发分享详解C语言之顺序表

目录一、思维导图二、步骤1.初始化2.求表长3.插入数据元素4.删除数据元素5.取出数据元素按位查找按位查找所有代码总结一、思维导图二、步骤1.初始化代码如下:void listinit(seqlis

目录
  • 一、思维导图
  • 二、步骤
    • 1.初始化
    • 2.求表长
    • 3.插入数据元素
    • 4.删除数据元素
    • 5.取出数据元素
      • 按位查找
      • 按位查找
  • 所有代码
    • 总结

      一、思维导图

      详解C语言之顺序表

      二、步骤

      1.初始化

      代码如下:

      %ignore_pre_1%

      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++开发分享详解C语言之顺序表,都可以关注C/C++技术分享栏目—猴子技术宅(www.ssfiction.com)

      本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/948724.html

      发表评论

      邮箱地址不会被公开。 必填项已用*标注