ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据结构c代码1:顺序表

2021-12-05 09:58:14  阅读:109  来源: 互联网

标签:顺序 return int 代码 len printf 数据结构 data SeqList


下面是用c语言实现的顺序表的一些基本操作:

#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 25  //顺序表最大长度 

/*定义顺序表*/ 
typedef struct
{
	int data[MAXSIZE];
	int len;
}SeqList;

/*初始化顺序表*/

void InitList(SeqList *L)
{
	L->len = 0;
} 

/*建立顺序表*/
int CreatList(SeqList *L, int a[], int n)
{
	if(n > MAXSIZE)
	{
		printf("空间不够,无法建立顺序表!");
		return 0; 
	}
	
	for(int i=0; i<n; i++){
		L->data[i] = a[i];
	}
	L->len = n;
	return 1;
} 

/*遍历操作*/
void PrintList(SeqList *L)
{
	for(int i=0;i<L->len;i++){
		printf("%d ",(L->data[i]));
	}
}

/*判空操作*/
int  IsEmpty(SeqList *L)
{
	if(L->len == 0){
		return 1;
	}
	else
		return 0;
}

/*求顺序表长度*/
int GetLength(SeqList *L)
{
	return L->len; 
}

/*按值查找*/
int Locate(SeqList *L, int x)
{
	int i ; 
	for( i=0;i<L->len;i++)
	{
		if(L->data[i] == x)
		{
			return (i+1);   //找到该数,并将其下标返回 
		}
	}
	
	if(i == L->len){
		return 0;  //代表没有找到 
	}
}

/*按位查找*/
int Get(SeqList *L, int x, int *ptr)
{
	 //若查找成功,则通过指针参数ptr返回值
	 if(x < 1 || x > L->len)
	 {
	 	printf("查找位置非法,查找错误!!\n");
	 	return 0;
	 }
	 else
	 {
	 	*ptr = L->data[x];
	 	return 1;
	 }
}

/*插入操作*/
int Insert(SeqList *L, int i, int x)
{
	if(L->len > MAXSIZE)
	{
		printf("上溢错误!!");
		return 0 ; 
	}
	
	if(i<1 || i>L->len)
	{
		printf("插入位置错误!!!");
		return 0;
	}
	
	for(int k=L->len;k>i;k--){
		L->data[k]=L->data[k-1];
	}
	L->data[i] = x;
	L->len++;
	return 1;
	
}
/*删除操作*/
int Delet(SeqList *L, int i, int *ptr)
{
	if(L->len == 0)
	{
		printf("该顺序表为空!!");
		return 0;
	}
	if(i < 1 || i > L->len)
	{
		printf("删除位置错误!");
		return 0;
	}
	*ptr = L->data[i-1];
	for(int k=i;k<L->len;k++){
		L->data[k-1] = L->data[k];
	}
	L->len--;
	return 1;
}

/*修改操作*/
int Modify(SeqList *L, int i, int x)
{
	if(i < 1 || i > L->len)
	{
		printf("位置错误!");
		return 0;
	}
	L->data[i-1] = x;
	return 1;
} 

int main()
{
	int x;
	int a[5] = {5, 15, 25, 35, 45};
	SeqList list;
	InitList(&list);   //初始化顺序表
	if(IsEmpty(&list))
	{
		 printf("初始化顺序表成功!\n");
	}
	printf("给表赋值:5,15,25,35,45\n遍历并输出顺序表:\n");
	CreatList(&list, a, 5);   //建立一个长度为5的顺序表 
	PrintList(&list);    //遍历顺序表 
	
	printf("\n在第五位后插入一个500:\n");
	Insert(&list, 5, 500);
	PrintList(&list);
	
	if(Modify(&list, 3, 250) == 1)
	{
		printf("\n把第三位改成250\n");
		PrintList(&list);
	}	
	
	if(Delet(&list, 6, &x))
	{
		printf("\n把倒数第一位删除,删除的值是%d\n", x);	
		PrintList(&list);
	}
	
	system("pause");
	return 0;
}

 

标签:顺序,return,int,代码,len,printf,数据结构,data,SeqList
来源: https://blog.csdn.net/weixin_43679330/article/details/121725736

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有