数据结构D3

作业:

按下表插入

按下表修改

head.h

#ifndef __HEAD_H__

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

#define MAXSIZE 10



typedef struct Sqlist
{
	int data[MAXSIZE];//数据元素
	int len;//数据长度
}sqlist;

sqlist * create();
int full_sqlist(sqlist *list);
int input_rear(sqlist *list,int element);
int output(sqlist *list);
int delete(sqlist *list);
int search_by_sub(sqlist *list,int sub);
int add_by_x(sqlist *list,int x,int element);
int modify_by_x(sqlist *list,int x,int element);
sqlist *free_1(sqlist *list);
#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 input_rear(sqlist *list,int element)
{
	if( NULL == list || full_sqlist(list) )
	{
		printf("error\n");
		return -1;
	}
	list->data[list->len] = element;
	list->len++;
	return 0;
}

int empty(sqlist *list)
{
	return list->len == 0 ? -1:0;
}

int output(sqlist *list)
{
	if( NULL == list || empty(list))
	{
		printf("ERROR\n");
		return -1;
	}
	for(int i = 0 ; i < list->len ; i++)
	{
		printf("%d\t",list->data[i]);
	}
	puts("");
	return 0;
}

int delete(sqlist *list)
{
	if( NULL == list || empty(list))
	{
		printf("错误\n");
		return -1;
	}
	list->len-- ;
	return 0;
}

int search_by_sub(sqlist *list,int sub)
{
	if( NULL == list || empty(list) || sub < 0 || sub > list->len)
	{
		printf("ERROR");
		return -1;
	}
	printf("search is %d\n",list->data[sub]);
	return 0;
}

int add_by_x(sqlist *list,int x,int element)
{
	if( NULL == list || full_sqlist(list) || x < 0 || x > list->len )
	{
		printf("ERROR\n");
		return -1;
	}
	for(int i = list->len - 1 ; i >= x ; i--)
	{
		list->data[i+1]=list->data[i];
	}
	list->len++;
	list->data[x]=element;
	return 0;
}

int modify_by_x(sqlist *list,int x,int element)
{
	if( NULL == list || empty(list) || x < 0 || x > list->len )
	{
		printf("ERROR\n");
		return -1;
	}
	list->data[x] = element;
	return 0;
}

sqlist *free_1(sqlist *list)
{
	if( NULL == list)
	{
		return list;
	}
	free(list);
	list = NULL;
	return list;
}

main.c

#include"head.h"
int main()
{
	sqlist *list=create(); 
	int n = 0;
	printf("please enter n: ");
	scanf("%d",&n);
	int element = 0;
	for( int i = 0 ; i < n ; i++)
	{
		printf("please enter %d element:",i+1);
		scanf("%d",&element);
		input_rear(list,element);
	}
	
	output(list);
	delete(list);
	output(list);
	int sub = 0;
	printf("please enter sub:");
	scanf("%d",&sub);
	search_by_sub(list,sub);
	int x = 0;
	element = 0;
	printf("please enter x:");
	scanf("%d",&x);
	printf("please enter element:");
	scanf("%d",&element);
	add_by_x(list,x,element);
	output(list);
	x = 0;
	element = 0;
	printf("please enter x:");
	scanf("%d",&x);
	printf("please enter element:");
	scanf("%d",&element);
	modify_by_x(list,x,element);
	output(list);
	list=free_1(list);
	return 0;
}

运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值