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

数据结构-顺序表基本 *** 作(C语言实现),第1张

数据结构-顺序表基本 *** 作(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 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5097588.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存