7.17 数据结构day3 思维导图和代码

 

head1.h


#ifndef _HEAD1_H
#define _HEAD1_H
#define MAXSIZE 8
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
typedef int datatype;
typedef struct
{
	int len;
	datatype data[MAXSIZE];
}sqlist;
sqlist *Create_list();
int full(sqlist *list);
int insert_rear(int e,sqlist *list);
int Output(sqlist *list);
int empty(sqlist *list);
int delet_rear(sqlist *list);
datatype Search_sub(int sub,sqlist *list);
int updata_sub(sqlist *list,int sub,datatype k);
int insert_sub(sqlist *list,int sub,datatype k);
int delet_sub(int sub,sqlist *list);
int search_key(datatype key,sqlist *list);
int delet_key(datatype key,sqlist *list);
int insert_key(datatype key,sqlist *list,datatype ele);
int updata_key(datatype key,sqlist *list,datatype ele);
#endif

main,主函数

#include "head1.h"
int main(int argc, const char *argv[])
{
	sqlist *list=Create_list();
	int n;
	printf("please enter n:");
	scanf("%d",&n);
	datatype ele;
	for(int i=0;i<n;i++)
	{   printf("please enter ele:");
		scanf("%d",&ele);
		insert_rear(ele,list);
	}
	Output(list);

	delet_rear(list);
//	delet_rear(list);
//	delet_rear(list);
	Output(list);

	int sub;
	printf("please enter search sub:");
	scanf("%d",&sub);
	datatype k=Search_sub(sub,list);
	if(k!=-1)
		printf("查找到的元素为:%d\n",k);

	printf("please enter updata:");
	scanf("%d",&sub);
	printf("please enter updata ele:");
	scanf("%d",&k);
	updata_sub(list,sub,k);
	Output(list);

	printf("please enter insert_sub:");
	scanf("%d",&sub);
	printf("please enter insert_sub ele:");
	scanf("%d",&k);
	insert_sub(list,sub,k);
	Output(list);

	printf("please enter delet_sub:");
	scanf("%d",&sub);
	delet_sub(sub,list);
	Output(list);

	datatype key;
	printf("enter search_key:");
	scanf("%d",&key);
	int key_sub=search_key(key,list);
	if(key_sub==-1)
		printf("search_key error\n");
	else
		printf("search_key sub:%d\n",key_sub);

    printf("enter delet_key:");
	scanf("%d",&key);
	delet_key(key,list);
	Output(list);

    printf("enter insert_key:");
	scanf("%d",&key);
	printf("enter insert:");
	scanf("%d",&ele);
	insert_key(key,list,ele);
	Output(list);
  
	printf("enter updata_key:");
	scanf("%d",&key);
	printf("enter updata:");
	scanf("%d",&ele);
	updata_key(key,list,ele);
	Output(list);
	return 0;
}

test1.c 被调函数

#include "head1.h"
sqlist *Create_list()
{
	sqlist *list=(sqlist *)malloc(sizeof(sqlist));
	if (NULL==list)
		return NULL;
	list->len=0;
	memset(list->data,0,sizeof(list->data));
	return list;
}

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

int insert_rear(int e,sqlist *list)
{   if(NULL==list || full(list))
	{   printf("insert error\n"); 
		return -1;}
	list->data[list->len]=e;
	list->len++;
	return 0;
}

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

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

int delet_rear(sqlist *list)
{   if(NULL==list || empty(list))
	{   puts("delet_rear error");
		return -1;}
	printf("删除了第%d个元素,值为:%d\n",list->len,list->data[list->len-1]);
	list->len--;
	return 0;
}

datatype Search_sub(int sub,sqlist *list)
{   if(NULL==list || empty(list) || sub<0 || sub>=list->len)
	{   printf("Search error\n");
		return -1;}
	return list->data[sub];
}

int updata_sub(sqlist *list,int sub,datatype k)
{   if(NULL==list || empty(list) || sub<0 || sub>=list->len)
	{   printf("updata error\n");
		return -1;}
	list->data[sub]=k;
	return 0;
}

int insert_sub(sqlist *list,int sub,datatype k)
{   if(NULL==list || full(list) || sub<0 || sub>list->len)
	{   printf("insert_sub error\n");
		return -1;}
	for(int i=list->len-1;i>=sub;i--)
	{   list->data[i+1]=list->data[i];}
	list->data[sub]=k;
	list->len++;
	return 0;
}

int delet_sub(int sub,sqlist *list)
{   if(NULL==list || empty(list) || sub<0 || sub>=list->len)
	{   printf("delet_sub error\n");
		return -1;}
	for(int i=sub;i<list->len-1;i++)
		list->data[i]=list->data[i+1];
	list->len--;
	return 0;
}

int search_key(datatype key,sqlist *list)
{   if(NULL==list || empty(list))
	   return -1;
	for(int i=0;i<list->len;i++)
		if (list->data[i]==key)
			return i;
	return -1;
}

int delet_key(datatype key,sqlist *list)
{   int k=search_key(key,list);
	delet_sub(k,list);
}

int insert_key(datatype key,sqlist *list,datatype ele)
{   int k=search_key(key,list);
	insert_sub(list,k,ele);
}

int updata_key(datatype key,sqlist *list,datatype ele)
{   int k=search_key(key,list);
	updata_sub(list,k,ele);
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值