数据结构-顺序表

1.heah.h

cpp 复制代码
#ifndef HEAD_H_
#define HEAD_H_
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define maxsize 10
enum A{SUCCESS,FLASE=-1};
typedef int type;
typedef struct {
	type arr[maxsize];
	type len;
}SQlist;

SQlist * create();

int input(SQlist *list,type element);

int output(SQlist *list);
int delete(SQlist *list,type n);
int insert_sub(SQlist *list,type n,type element);
int delete_sub(SQlist *list,type sub);
int update_sub(SQlist *list,type sub,type element);
int search_sub(SQlist *list,type sub);
int delete_element(SQlist *list,type element);
int search_element(SQlist *list,type element);
int update_element(SQlist *list,type element,type element0);
int QUCHONG(SQlist *list);
int sort(SQlist *list);
SQlist* free_p(SQlist *list);
#endif

2.test.c

cpp 复制代码
#include "head.h"
SQlist *create()
{
	SQlist *list=((SQlist*)malloc(sizeof(SQlist)));
	memset(list->arr,0,sizeof(list->arr));
	list->len=0;
	return list;
}

int input(SQlist *list,type element)
{
	if(list==NULL||list->len>maxsize)
	{
	return FLASE;
	}
	list->arr[list->len]=element;
	list->len++;
	return SUCCESS;
}

int output(SQlist *list)
{
	if(list==NULL||list->len>mSQlist* free_p(SQlist *list)SQlist* free_p(SQlist *list)axsize)
	{
	return FLASE;
	}
	for(type i=0;i<list->len;i++)
	{
		printf("%d ",list->arr[i]);
	}
	printf("\n");
	return SUCCESS;
}

int delete(SQlist *list,type n)
{
	if(list==NULL||list->len>maxsize)
	{
	return FLASE;
	}
	for(type i=0;i<n;i++)
	{
		list->arr[list->len]==0;
		list->len--;
	}
	return SUCCESS;
}

int insert_sub(SQlist *list,type sub,type element)
{
	if(list==NULL||list->len>maxsize||sub<0||sub>list->len)
	{
	return FLASE;
	}
	list->len++;
	for(type i=list->len;i>sub;i--)
	{
		list->arr[list->len+1]=list->arr[list->len];
	}
	list->arr[sub]=element;
	return SUCCESS;
}

int delete_sub(SQlist *list,type sub)
{
	if(list==NULL||list->len>maxsize||sub<0||sub>list->len)
	{
	return FLASE;
	}
	for(type i=sub;i<list->len;i++)
	{
		list->arr[i]=list->arr[i+1];
	}
	list->arr[list->len]=0;
	list->len--;

}

int update_sub(SQlist *list,type sub,type element)
{
	if(list==NULL||list->len>maxsize||sub<0||sub>list->len)
	{
	return FLASE;
	}
	list->arr[sub]=element;
	return SUCCESS;
}

int search_sub(SQlist *list,type sub)
{
	if(list==NULL||list->len>maxsize||sub<0||sub>list->len)
	{
	return FLASE;
	}
	printf("在下标%d处的元素是%d\n",sub,list->arr[sub]);
	return SUCCESS;
}

int delete_element(SQlist *list,type element)
{
	if(list==NULL||list->len>maxsize)
	{
	return FLASE;
	}
	for(type i=0;i<list->len;i++)
	{
		if(list->arr[i]==element)
		{
		delete_sub(list,i);
		i--;
		}

	}
	return SUCCESS;
}

int search_element(SQlist *list,type element)
{
	if(list==NULL||list->len>maxsize)
	{
	return FLASE;
	}
	for(type i=0;i<list->len;i++)
	{
		if(list->arr[i]==element)
			printf("元素%d的下标是%d\n",element,i);
	}
	return 	SUCCESS;
}

int update_element(SQlist *list,type element,type element0)
{
	if(list==NULL||list->len>maxsize)
	{
	return FLASE;
	}
	for(type i=0;i<list->len;i++)
	{
		if(list->arr[i]==element)
		{
			list->arr[i]=element0;
		}
	}
	return SUCCESS;
}

int QUCHONG(SQlist *list)
{
	if(list==NULL||list->len>maxsize)
	{
	return FLASE;
	}
	for(type i=0;i<list->len;i++)
	{
		for(type j=i+1;j<list->len;j++)
		{
			if(list->arr[i]==list->arr[j])
			{
				delete_sub(list,j);
				j--;
			}
		}
	}
	return SUCCESS;
}

int sort(SQlist *list)
{
	type temp;
	if(list==NULL||list->len>maxsize)
	{
	return FLASE;
	}
	for(type i=0;i<list->len;i++)
	{
		for(type j=i;j<list->len;j++)
		{
			if(list->arr[i]>list->arr[j])
			{
			temp=list->arr[i];
			list->arr[i]=list->arr[j];
			list->arr[j]=temp;
			}
		}
	}
	return SUCCESS;
}

SQlist* free_p(SQlist *list)
{
	if(list==NULL)
	{
		return NULL;
	}
	free(list);
	list=NULL;
	return list;
}

3.main.c

cpp 复制代码
#include "head.h"
int main(int argc,const char *argv[])
{
	SQlist *list=create();
	type n,element,sub,element0;
	printf("插入多少个元素\n");
	scanf("%d",&n);
	for(type i=0;i<n;i++)
	{
		printf("输入第%d个元素\n",i+1);
		scanf("%d",&element);
		input(list,element);
	}
	output(list);
	printf("尾删几次\n");
	scanf("%d",&n);
	delete(list,n);
	output(list);
	printf("在哪个下标插入哪个元素\n");
	scanf("%d %d",&sub,&element);
	insert_sub(list,sub,element);
	output(list);
	printf("在哪个下标删除元素\n");
	scanf("%d",&sub);
	delete_sub(list,sub);
	output(list);
	printf("在哪个下标替换哪个元素\n");
	scanf("%d %d",&sub,&element);
	update_sub(list,sub,element);
	output(list);
	printf("查询下标几处的元素\n");
	scanf("%d",&sub);
	search_sub(list,sub);
	printf("输入需要删除的元素\n");
	scanf("%d",&element);
	delete_element(list,element);
	output(list);
	printf("输入想要查找的元素\n");
	scanf("%d",&element);
	search_element(list,element);
	printf("输入想要修改的元素和修改后的元素\n");
	scanf("%d %d",&element,&element0);
	update_element(list,element,element0);
	output(list);
	QUCHONG(list);
	printf("去重后:\n");
	output(list);
	printf("排序后:\n");
	sort(list);
	output(list);
	free_p(list);
}
相关推荐
xiangyun619 小时前
【408数据结构 08】队列:循环队列判空判满,408年年考,一次讲清
c语言·开发语言·数据结构·c++·算法
xiangyun619 小时前
【408数据结构 06】双链表、循环链表、静态链表
c语言·开发语言·数据结构·c++·算法
OKkankan10 小时前
LangChain 能力详解!:输出解析、RAG、向量数据库与 Retriever 检索器
数据结构·python·langchain·ai应用
蓝速科技10 小时前
便民服务大厅 AI 数字人一体机场景适配与落地指南丨蓝速科技
大数据·网络·数据结构·人工智能·自然语言处理·数据分析·运维开发
xxwxx__11 小时前
C++ AVL 树深度剖析:平衡二叉搜索树原理、源码与面试考点
数据结构·c++
Logic10111 小时前
C语言/数据结构数组题解:数字列表加一(Plus One)——进位处理与数组扩展
c语言·数据结构·模拟·数组·时间复杂度·算法题·进位
xxwxx__14 小时前
C++ STL set 与 map 全套详解:关联式容器、红黑树底层、代码坑点、刷题实战
数据结构·c++
程曦曦15 小时前
MySQL 生产库误删 98 张表后的时间点恢复实战:从 binlog 解析到资金对账
linux·数据结构·其他·算法·ubuntu·运维开发
郝学胜-神的一滴15 小时前
Effective Python 条款 13:善用星号解包,告别下标切片拆分的坑
服务器·开发语言·数据结构·python·程序人生·pycharm
Logic10116 小时前
C语言/数据结构位运算题解:异或XOR找出流水线上的“独特零件编号“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质