day 9

实现顺序表功能

1.实现尾插法

2.实现尾删法

3.实现顺序表查找

4.实现按下标插入

5.实现按下标修改

6.实现按下标删除

head.h

#ifndef __HEAD_H__
#define __HEAD_H__

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

#define MAXSIZE 10

typedef struct Sqlist
{
	int len;//顺序表长度
	int data[MAXSIZE];//数据元素
}sqlist;
sqlist * create();
int full_sqlist(sqlist *list);
int insert_rear(sqlist *list,int element);
int emty_sqlist(sqlist *list);
int output(sqlist *list);
int delete_rear(sqlist *list);
int found(sqlist *list,int sub);
int rev(sqlist *list,int sub,int element);
int insert(sqlist *list,int sub,int element);
int rm(sqlist *list,int sub);

#endif

test.c

#include "head.h"
sqlist * create()
{
	sqlist *list=(sqlist *)malloc(sizeof(sqlist));
	if(NULL==list)
	{
		return NULL;
	}
	memset(list->data,0,sizeof(list->data));//对数据清零
	list->len=0;//长度清零
	return list;
}
int full_sqlist(sqlist *list)
{
	return list->len==MAXSIZE?-1:0;
}
int insert_rear(sqlist *list,int element)
{
	if(NULL==list || full_sqlist(list))
	{
		puts("ERROR");
		return -1;
	}
	list->data[list->len]=element;
	list->len++;
	return 0;
}
int emty_sqlist(sqlist *list)
{
	return list->len==0?-1:0;
}
int output(sqlist *list)
{
	if(NULL==list||emty_sqlist(list))
	{
		puts("为空");
		return -1;
	}
	for(int i=0;i<list->len;i++)
	{
		printf("%d\t",list->data[i]);
	}
	printf("\n");
	return 0;
}
int delete_rear(sqlist *list)
{
	if(NULL==list||emty_sqlist(list))
	{
		puts(" delete error");
		return -1;
	}
	list->len--;
	return 0;
}
int found(sqlist *list,int sub)
{
	if(NULL==list||emty_sqlist(list)||sub<0||sub>=list->len)
	{
		puts("查找失败");
		return -1;
	}
	printf("search element:%d\n",list->data[sub]);
	return 0;
}
int rev(sqlist *list,int sub,int element)
{
	if(NULL==list||emty_sqlist(list)||sub<0||sub>=list->len)
	{
		puts("修改错误");
		return -1;
	}
	list->data[sub]=element;
	return 0;
}
int insert(sqlist *list,int sub,int element)
{
	if(NULL==list||full_sqlist(list)||sub<0||sub>list->len)
	{
		puts("插入位置错误");
		return -1;
	}
	for(int i=list->len-1;i>=sub;i--)
	{
		list->data[i+1]=list->data[i];
	}
	list->data[sub]=element;
	list->len++;
	return 0;
}
int rm(sqlist *list,int sub)
{	
	if(NULL==list||emty_sqlist(list)||sub<0||sub>=list->len)
	{
		puts("删除位置错误");
		return -1;
	}
	for(int i=sub;i<list->len-1;i++)
	{
		list->data[i]=list->data[i+1];
	}
	list->len--;
	return 0;
}

main.c

#include "head.h"
int main(int argc, const char *argv[])
{
	sqlist* list=create(); 
	int n;
	int element;
	printf("please input n:\n");
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		printf("please input %d element:\n",i+1);
		scanf("%d",&element);
		insert_rear(list,element);
	}
	printf("output sqlist:\n");
	output(list);
	delete_rear(list);
	printf("after delete :\n");
	output(list);
	int sub;
	printf("输入查找的下标:\n");
	scanf("%d",&sub);
	found(list,sub);
	printf("输入要修改的元素下标:\n");
	scanf("%d",&sub);
	puts("输入要修改的值:");
	scanf("%d",&element);
	rev(list,sub,element);
	output(list);
	puts("输入要插入的下标:");
	scanf("%d",&sub);
	puts("输入要插入的值:");
	scanf("%d",&element);
	insert(list,sub,element);
	output(list);
	puts("输入要删除的下标:");
	scanf("%d",&sub);
	rm(list,sub);
	output(list);

	return 0;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值