2024/2/19

 完成白天课上的代码,并编写makefile进行编译

 

#include <stdio.h>
#include <stdlib.h>
#include "./03_shunxu_tou.h" 
Seqlist* cj_seqlist()//创建顺序表
{
	Seqlist *list = (Seqlist*)malloc(sizeof(Seqlist));
	if(NULL == list)
	{
		return NULL;
	}
	list->pos = 0;
	return list;

}

void  cr_seqlist(Seqlist* list ,datatype num)//尾行插入数据
{
	if(list->pos >=N)
	{
		printf("顺序表满了,插入失败\n");
		return;
	}
	list->data[list->pos] = num;
	(list->pos)++;
	printf("插入成功\n");
	return;
}

void bl_seqlist(Seqlist* list  )//遍历顺序表
{
	int i;
	for(i=0;i<(list->pos);i++)
	{
		printf("%d ",list->data[i]);
	}
	printf("\n");
	return;
}

datatype sc_seqlist(Seqlist* list )//删除尾行数据并返回
{
	datatype num;
	if(list->pos <= 0)
	{
		printf("顺序表为空,删除失败\n");
		return 0;
	}
	(list->pos)--;
	num =list->data[list->pos];
	printf("删除成功\n");
	return num;
}

void xbcr_seqlist(Seqlist* list ,int n, datatype num)//下标插入数据
{
	int i = list->pos;
	if(i >=N)
	{
		printf("顺序表满了,插入失败\n");
		return;
	}
	for(i= list->pos;i>n;i--)
	{
	list->data[i] = list->data[i-1] ;
	
	}
	list->data[n] = num;
	(list->pos)++;
		printf("插入成功\n");
		if(n<0 ||n>list->pos)
		{
		printf("插入位置非法\n");
		}
	return;
}

datatype xbsc_seqlist(Seqlist* list,int n)//删除下标数据并返回
{
	int i;
	if(list->pos <= 0)
	{
		printf("顺序表为空,删除失败\n");
		return 0;
	}
	datatype num = list->data[n];
	for(i = n;i<(list->pos)-1;i++)
	{
	list->data[i] = list->data[i+1];
	}
	(list->pos)--;
	printf("删除成功\n");
	return num;
}

datatype xbcz_seqlist(Seqlist* list,int n)//按下标查找数据
{
	for(int i = 0;i<list->pos;i++)
	{
	if(i==n)
	{
	return list->data[n];
	}
	
	}
	return 0;
}

datatype xbxg_seqlist(Seqlist* list,int n,datatype num)//按下标修改数据
{
for(int i = 0;i<list->pos;i++)
	{
	if(i==n)
	{
	 list->data[n] = num;
	}
	
	}
	return num;
}

 void sjxg_seqlist(Seqlist* list,datatype old,datatype newnum)//按数据修改数据
{
for(int i = 0;i<list->pos;i++)
	{
	if(list->data[i] == old)
	{
	 list->data[i] = newnum;
	}
	}
return;
}
int sjcz_seqlist(Seqlist* list,datatype num)//按数据修改数据
{
for(int i = 0;i<list->pos;i++)
	{
	if(list->data[i] == num)
	{
	return i;
	}
	}
}

 

#include <stdio.h>
#include "./03_shunxu_tou.h" 
int main(int argc, const char *argv[])
{
	Seqlist *list = cj_seqlist();
	cr_seqlist(list ,18);
	cr_seqlist(list ,27);
	cr_seqlist(list ,69);
	cr_seqlist(list ,70);


	bl_seqlist(list);
	datatype n = sc_seqlist(list);
	bl_seqlist(list);
	printf("删除据的数据是%d\n",n);

	xbcr_seqlist( list ,2, 59);
	bl_seqlist(list);

 datatype m = xbsc_seqlist( list ,2);
	printf("删除据的数据是%d\n",m);
	bl_seqlist(list);

 datatype a = xbcz_seqlist(list,0); 
	printf("位置为0的数据是%d\n",a);
	
 xbxg_seqlist(list,0,80);
	bl_seqlist(list);

sjxg_seqlist(list,80,96);
	bl_seqlist(list);

int c = sjcz_seqlist(list,70);
printf("70位置在%d\n",c);
	return 0;
}

 

 

#ifndef __sunxu_H__
#define N 4 
typedef int datatype;

typedef struct
{
	datatype data[N];
	int pos;
}Seqlist;

Seqlist* cj_seqlist();
void  cr_seqlist(Seqlist* list ,datatype num);
void bl_seqlist(Seqlist* list ); 
datatype sc_seqlist(Seqlist* list );
void xbcr_seqlist(Seqlist* list ,int n, datatype num);
datatype xbsc_seqlist(Seqlist* list ,int n);
datatype xbcz_seqlist(Seqlist* list,int n); 
datatype xbxg_seqlist(Seqlist* list,int n,datatype num);
void sjxg_seqlist(Seqlist* list,datatype old,datatype newnum);
int sjcz_seqlist(Seqlist* list,datatype num);
#endif

 

 -include ./makefile.cfg
 
 $(Target):$(Obj)   
 
     $(CC) $^ -o $@
 
 %.o:%.c 
 
     $(CC) $< $(CAN) $@
 
 .PHONY:clean        
 
 clean:
     rm $(Obj)
 
                           

 

 Target:=a.out
 Obj:=01_shunxu.o 02_shunxu_main.o 
 
 CAN:=-c -o
 CC:=gcc
                                   

 

 顺序表去重

#include <stdio.h>
#include <stdlib.h>
#define N 16
typedef struct
{
	int data[N];
	int pos;
}Seqlist;

Seqlist* cj_seqlist()
{
	Seqlist* list = (Seqlist*)malloc(sizeof(Seqlist));
	if(NULL == list)
	{
		return NULL;
	}
	list->pos = 0;

}
void cr_seqlist(Seqlist* list,int num)
{
	if(list->pos >= N)
	{
		printf("满了,插入失败\n");
		return;
	}
	list->data[list->pos] = num;
	(list->pos)++;
	printf("插入成功\n");
	return;
}

void bl_seqlist(Seqlist* list)
{
	int i = 0;
	for(i=0;i<list->pos;i++)
	{
		printf("%d ",list->data[i]);
	}
	putchar(10);
	return;
}
void cscf_seqlist(Seqlist* list)
{
	int i,j,k;
	for(i=0;i<list->pos;i++)
	{
		for(j=i+1;j<list->pos;j++)
		{
			if(list->data[i]==list->data[j])
			{
				for(k=j;k<list->pos-1;k++)
				{
					list->data[k]=list->data[k+1];
				}
				list->pos--;
				j--;
			}
		}
	}
	printf("删除完成\n");
	return;
}
int main(int argc, const char *argv[])
{
	Seqlist *list = cj_seqlist();

	cr_seqlist( list,1);
	cr_seqlist( list,1);
	cr_seqlist( list,2);
	cr_seqlist( list,2);
	cr_seqlist( list,2);
	cr_seqlist( list,3);
	cr_seqlist( list,3);
	cr_seqlist( list,5);
	cr_seqlist( list,5);
	cr_seqlist( list,5);
	cr_seqlist( list,6);
	bl_seqlist(list);
	cscf_seqlist(list);
	bl_seqlist(list);
	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值