9.14作业

seqlist *list_create ();//创建
int list_empty(seqlist *p);//判断是否为空
int list_full(seqlist *p);//判断是否为满
void add_list(seqlist *p,datatype g);//添加
void list_out(seqlist *p);//输出
void list_insert_pos(seqlist *p,datatype g,int pos);//按位置增添
void list_delete_pos(seqlist *p,int pos);//按位置删除
int  list_search_pos(seqlist *p,int pos);//按位置查找
int list_update_pos(seqlist *p,int pos,datatype g);//按位置修改
int list_search_num(seqlist *p,int num); //按值查找
int list_search_update_num(seqlist *p,int num,datatype g);//按值修改
void list_maopao_sort(seqlist *p);//冒泡排序
void list_quchong(seqlist*p);//去重
void list_free(seqlist *p);//销毁
 

#ifndef  __1_H__
#define __1_H__
#define MAX 50
typedef int datatype;
typedef struct 
{
 datatype S[MAX];
 int len;
}seqlist;
seqlist *list_create ();//创建
int list_empty(seqlist *p);//判断是否为空
int list_full(seqlist *p);//判断是否为满
void add_list(seqlist *p,datatype g);//添加
void list_out(seqlist *p);//展示
void list_insert_pos(seqlist *p,datatype g,int pos);//按位置增添
void list_delete_pos(seqlist *p,int pos);//按位置删除
int  list_search_pos(seqlist *p,int pos);//按位置查找
int list_update_pos(seqlist *p,int pos,datatype g);//按位置修改
int list_search_num(seqlist *p,int num); //按值查找
int list_search_update_num(seqlist *p,int num,datatype g);//按值修改
void list_maopao_sort(seqlist *p);//冒泡排序
void list_quchong(seqlist*p);//去重
void list_free(seqlist *p);//销毁

************************************************************************
#include <stdio.h>
#include<stdlib.h>
#include"1.h"
seqlist *list_create()
{
	seqlist *p=(seqlist*)malloc(sizeof(seqlist));
	if(p==NULL)
	{
		printf("申请失败\n");
		return NULL;
	}
	printf("申请成功\n");
	p->len=0;
	return p ;
}
int list_empty(seqlist *p)
{
	if(p->len==0)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}
int list_full (seqlist *p)
{
	if(p->len>=MAX)
	{
		return 1;
	}
	else
	{
		return 0;
	}

}
void add_list(seqlist *p,datatype g)
{
	if(NULL==p || list_full(p))
	{
		printf("输入失败\n");
		return -1;
	}                 
	p->S[p->len]=g;
	p->len++;
	printf("输入成功\n");
}
void list_out(seqlist*p)
{
	if(p==NULL||list_empty(p))
	{
		printf("输出失败\n");
	}        
	for(int i=0;i<p->len;i++)
	{
		printf("%d ",p->S[i]);
	}
	putchar(10);
}
void list_insert_pos(seqlist *p,datatype g,int pos)
{
	if(p==NULL||pos>=p->len||pos<0||list_full(p))
	{
		printf("输入错误\n");
		return -1;
	}
	for(int i=(p->len)-1;i>=pos;i--)
	{
		p->S[i+1]=p->S[i];
	}
	p->len++;
	p->S[pos]=g;
	printf("插入成功\n");
} 
void list_delete_pos(seqlist *p,int pos)
{
	if(p==NULL||pos<0||pos>=p->len||list_empty(p))
	{
		printf("输入错误\n");
		return -1;
	}
	for(int i=pos+1;i<p->len;i++)
	{
		p->S[i-1]=p->S[i];
	}
	p->len--;
	printf("删除成功\n");
}
int list_search_pos(seqlist *p,int pos)
{
	int k=p->S[pos];
	printf("查找成功:\n%d\n",k);
	return 0;
}
int list_update_pos(seqlist *p,int pos,datatype g)//按位置修
{
	if(p==NULL||list_empty(p)||pos>=p->len||pos<0)
	{
		printf("修改失败\n");
	}
	p->S[pos]=g;
	printf("修改成功\n");
}
int list_search_num(seqlist *p,int num)
{
	if(p==NULL||list_empty(p))
	{
		printf("查找失败\n");
		return -1;
	}
	for(int i=0;i<p->len;i++)
	{
		if(num==p->S[i])
		{
			printf("位置为:%d\n",i);
			return i;
		}
	}
	return 0;
}
int list_search_update_num(seqlist *p,int num,datatype g)
{
	if(p==NULL||list_empty(p))
	{
		printf("查找失败\n");
		return -1;
	}
	for(int i=0;i<p->len;i++)
	{
		if(num==p->S[i])
		{
			p->S[i]=g;
		}
	}
	printf("修改成功\n");
	return 0;

}
void list_maopao_sort(seqlist *p)//冒泡排序
{
	datatype temp=0;
	for(int i=0;i<p->len-1;i++)
	{
		for(int j=0;j<p->len-i-1;j++)
		{
			if(p->S[j]>p->S[j+1])
			{
				temp=p->S[j];
				p->S[j]=p->S[j+1];
				p->S[j+1]=temp;
			}
		}
	}
	printf("排序成功\n");
}
void list_select_sort(seqlist *p)//选择排序
{
	datatype a=0;
	for(int i=0;i<p->len-1;i++)
	{
		datatype temp=i;
		for(int j=i+1;j<p->len;j++)
		{
			if(p->S[temp]<p->S[j])
			{
				temp=j;
			}
		}
		a=p->S[i];
		p->S[i]=p->S[temp];
		p->S[temp]=a;
	}
	printf("排序成功\n");
}
void list_quchong (seqlist *p)
{
	if(p==NULL||p->len<1)
	{
		printf("无法去重\n");
	}
	for(int i=0;i<p->len;i++)
	{
		for(int j=i+1;j<p->len;j++)
		{
			if(p->S[i]==p->S[j])
			{
				list_delete_pos(p,j);
				j--;

			}

		}
	}
	printf("去重成功\n");
}
void list_free (seqlist *p)
{
	if(p!=NULL)
	{
		free(p);
		p=NULL;
	}
	printf("销毁成功\n");
}
********************************************************************
#include <stdio.h>
#include<stdlib.h>
#include"1.h"
int main(int argc, const char *argv[])
{
	seqlist *p= list_create();
	if(NULL==p)
	{
		return -1;
	}
	list_empty(p);
	list_full(p); 
	add_list(p,3);
	add_list(p,5);
	add_list(p,83);
	add_list(p,73);
	add_list(p,36);
	list_out(p);
	list_insert_pos(p,2,3);
	list_out(p);
	list_delete_pos(p,2);
	list_out(p);
	list_search_pos(p,3);
	list_update_pos(p,2,66);
	list_out(p);
	list_search_num(p,66);
	list_search_update_num(p,3,88);
	list_out(p);
	list_maopao_sort(p);
	list_out (p);
	list_select_sort(p);
	list_out(p);
	add_list(p,36);
	add_list(p,36);
	add_list(p,73);
	add_list(p,77);
	add_list(p,88);
	list_out (p);
	list_quchong(p);
	list_out(p);
	list_free(p);
	free(p);
	p=NULL;
	return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值