嵌入式工程师之数据结构

        开始学习数据结构了,今天学习了一些动态分配空间的知识,malloc函数,并了解了它的各种使用情况,还有回收函数free,在指针回收的时候为了避免野指针,需要将指针指向NULL....等等。下面是脑图:

 day1作业

因为是多文件编辑我将2个题的头文件和函数文件都写在了一起

第一题的main函数:

#include "head.h" 

int main(int argc, const char *argv[])
{
	int n;
	printf("请输入字符串的长度\n");
	scanf("%d",&n);
	getchar();
	char *p = spaceChar(n);
	printf("输入字符串各个值\n");
	MyinputChar(p,n);
	Myprint(p);
	printf("逆置后的结果是\n");
	Nizhi(p);
	free(p);
	p = NULL;
	return 0;
}

 第二题的main函数:

#include "head.h"

int main(int argc, const char *argv[])
{
	int n,m;
	printf("请输入要分配的空间大小\n");
	scanf("%d %d",&n,&m);
	int *p = spaceInt(n);
	int *key = spaceInt(m);
	printf("请输入%d个整形数\n",n);
	MyinputInt(p,n);
	printf("请输入%d个整形数\n",m);
	MyinputInt(key,m);
	printf("检查是否存在\n");
	Check(p,key,n);
	free(p);
	free(key);
	p == NULL;
	key == NULL;
	return 0;
}

 head头文件:

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

int *spaceInt(int n);
char *spaceChar(int n);

void MyinputChar(char *p,int n);
void MyinputInt(int *p,int n);

void Myprint(char *p);

void Nizhi(char *p);

void Check(int *p,int *key,int n);

函数文件:

#include "head.h"

int *spaceInt(int n){
	int *p = (int *)malloc(sizeof(int)*n);
	if(p == NULL){
		return NULL;
	}
	return p;
}

char *spaceChar(int n){
	char *p = (char *)malloc(sizeof(char)*n);
	if(p == NULL){
		return NULL;
	}
	return p;
}

void MyinputChar(char *p,int n){
	for(int i = 0 ; i < n; i ++){
		if(i == n - 1){
			*(p+i) = '\0';
			break;
		}
		scanf("%c",p+i);
		getchar();
	}
} 

void MyinputInt(int *p,int n){
	for(int i = 0 ; i < n; i ++){
		scanf("%d",p+i);
		getchar();
	}
} 

void Myprint(char *p){
	int n = 0;
	while(*(p+n)){
		printf("%c",*(p+n));
		n++;
	}
	printf("\n");
}

void Nizhi(char *p){
	int right = strlen(p) - 1;
	int left = 0;
	while(left < right){
		char a = *(p+left);
		*(p+left) = *(p+right);
		*(p+right) = a;
		left ++;
		right --;
	}
	puts(p);
}

void Check(int *p,int *key,int n){
	for(int i = 0; i < n; i ++){
		if(*key == *(p+i)){
			printf("存在\n");
			return;
		}
	}
	printf("不存在\n");
}

第一题结果:

第二题结果:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值