栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构-顺序表基本操作(C语言实现)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构-顺序表基本操作(C语言实现)

参考书:王道考研数据结构

//函数的声明
SqList InitList(l);                                    //初始化一个顺序表
void PrintfList(SqList l);                             //输出表
int GetElem(SqList l,int i);                           //按位查找
int LocateElem(SqList l,int e);                        //按值查找
int Length(SqList l);                                  //求表长
int Empty(SqList l);                                   //判空
SqList change_data(SqList l,int old_data,int new_data);//替换old_data为新元素new_data
SqList change_weizhi(SqList l,int pos,int  n_elem);    //按pos位置替换为n_elem的值
SqList ListInsert(SqList l,int q,int e);               //在pos位置新插入数据e
SqList ListDelete(SqList l,int pos);                   //删除pos位置上的数据
void DestroyList(SqList l);                            //销毁表

代码:

#include 
#include 

#define Size 5

//顺序表的结构定义
typedef struct{
	int *data;     //定义一个动态数组data
	int size;      //顺序表存储容量
	int length;    //顺序表长度
}SqList;

//函数的声明
SqList InitList(l);                                    //初始化一个顺序表
void PrintfList(SqList l);                             //输出表
int GetElem(SqList l,int i);                           //按位查找
int LocateElem(SqList l,int e);                        //按值查找
int Length(SqList l);                                  //求表长
int Empty(SqList l);                                   //判空
SqList change_data(SqList l,int old_data,int new_data);//替换old_data为新元素new_data
SqList change_weizhi(SqList l,int pos,int  n_elem);    //按pos位置替换为n_elem的值
SqList ListInsert(SqList l,int q,int e);               //在pos位置新插入数据e
SqList ListDelete(SqList l,int pos);                   //删除pos位置上的数据
void DestroyList(SqList l);                            //销毁表



int list[Size]={5,2,1,13,14};



int main(){
	
	SqList l;                  //初始化顺序表
	int pos=0;                 //初始化位置
	int Locate_elem=13;        //初始化查找值为13
	
	
	
	l=InitList();                   //调用函数InitList创建一个顺序表l
	printf("创建的顺序表为:n");
	PrintfList(l);                  //调用函数PrintfList输出l表
	printf("-------------------------------------------------------------------------n");
	
	
	
	
	
	printf("按位查找第三个位置的元素为n%dnn",GetElem(l,3));
	
	printf("-------------------------------------------------------------------------n");
	
	
	printf("按值查找查找值为1的元素的位置是n%dnn",LocateElem(l,1));
	printf("-------------------------------------------------------------------------n");
	
	
	l = change_data(l,5,100);
	printf("将5改为100得到新的顺序表为n");
	PrintfList(l);                  //调用函数PrintfList输出l表
	printf("-------------------------------------------------------------------------n");
	
	
	
	l = change_weizhi(l,2,520);
	printf("将2号位置上的值改为520得到新的顺序表为n");
	PrintfList(l);                  //调用函数PrintfList输出l表
	printf("-------------------------------------------------------------------------n");
	
	
	
	Empty(l);
	printf("nn");
	printf("-------------------------------------------------------------------------n");
	
	
	l = ListInsert(l,2,99);
	printf("将2号位置后插入一个新元素99得到新的顺序表为n");
	PrintfList(l);         
	printf("nn");
	printf("-------------------------------------------------------------------------n");
	
	
	
	l = ListDelete(l,2); 
	printf("将6号位置后的元素删除得到新的顺序表为n");
	PrintfList(l);         
	printf("nn");
	printf("-------------------------------------------------------------------------n");

	
	printf("n销毁顺序表");
	DestroyList(l);  
}








SqList InitList(void)
{
	SqList l;                                   //初始化l
	int i;                                      //i为for循环的计数器
	
	l.data=(int*)malloc(Size*sizeof(int));      //动态申请空间
	if(!l.data)                                 //判断申请是否成功
	{
		printf("申请内存失败!n");
		exit(0);      //失败则推出
	}
	for(i=0;il.length+1){
		printf("没有该位置,无效");
	}
	if(l.length>=l.size){
		l.data = (int *)realloc(l.data,(l.size+1)*sizeof(int));
		if(!l.data){
			printf("动态内存申请失败n");
			exit(0);
		}
		l.size+=1;
	}
	l.length+=1;
	
	for(i=l.length-1;i>=q-1;i--)
	{
		l.data[i+1]=l.data[i];
	}
	l.data[q-1]=e;
	
	return l;
	
} 



SqList ListDelete(SqList l,int pos)
{
	int i;
	if(pos<1||pos>l.length)
	{
		printf("没有该元素");
	}
	for(i=pos;i 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/429465.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号