zoukankan      html  css  js  c++  java
  • 手写数组

    /*
    * 手写数组,实现“判断数组状态”,“追加”,“插入”,“删除”
    * @Bight
    * 2020年2月8日
    */
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    typedef struct Add{
    	int * pBase;
    	int len;
    	int cnt;
    }Arr;
    
    
    void show_arr(Add * pArr);
    void init_arr(Add * pArr, int length);//初始化数组
    bool is_empty(Add * pArr);//判断为空
    bool is_full(Add * pArr);//判断为满
    bool insert_arr(Add * pArr, int pos, int val); //插入 
    bool addition_arr(Add * pArr, int val);
    bool delete_arr(Add * pArr, int pos , int * pVal);
    
    
    int main()
    {
    	Arr arr;
    	int val;
    	return 0;
    }
    
    void init_arr(Add * pArr, int length)
    {
    	pArr->pBase = (int *)malloc(sizeof(int) * length);
    	if(NULL == pArr->pBase){
    		printf("动态数组分配失败
    ");
    		exit(-1);
    	} 
    	else{
    		pArr->len = length;
    		pArr->cnt = 0;
    	}
    	return;
    }
    
    bool is_full(Add * pArr)
    {
    	if (pArr->cnt == pArr->len)
    		return true;
    	else 
    		return false;
    }
    
    
    bool addition_arr(Add * pArr, int val)
    {
    	if( is_full(pArr) )
    	{
    		printf("数组已满,无法再次追加新值!
    ");
    		return false;
    	}
    	else
    	{
    	    pArr->pBase[pArr->cnt] = val;
    	    pArr->cnt++;
    	}
    }
    
    bool insert_arr(Add * pArr, int pos, int val)
    {
    	if ( pos<1 || pos > pArr->cnt + 1 )
    	{
    		printf("插入位置无效,请尝试重新插入
    ");
    		return false;
    	}
    	else if ( is_full(pArr) )
    	{
    		printf("数组已满,无法插入新值
    ");
    		return false;
    	}
    	else{
    		for (int i = pArr->cnt-1; i >= pos-1; i--)
    		{
    			pArr->pBase[i+1] = pArr->pBase[i];
    		}
    		pArr->pBase[pos-1] = val;
    		pArr->cnt++;
    	}
    }
    
    void show_arr(Add * pArr)
    {
    	if ( is_empty(pArr) )
    	{
    		printf("数组为空
    ");
    	}
    	else
    	{
    		for (int i = 0; i < pArr->cnt; i++)
    		{
    			printf("%d ",pArr->pBase[i]);
    		}
    		printf("
    ");
    	}
    }
    
    bool is_empty(Add * pArr)
    {
    	if (pArr->cnt == 0){
    		return true;
    	}
    	else 
    		return false;
    }
    
    bool delete_arr(Add * pArr, int pos , int * pVal)
    {
    	if ( is_empty(pArr) )
    		return false;
    	if (pos<1 || pos>pArr->cnt-1)
    		return false;
    	
    	*pVal = pArr->pBase[pos-1];
    	for (int  i = pos; i < pArr->cnt; i++)
    	{
    		pArr->pBase[i-1] = pArr->pBase[i];
    	}
    	pArr->cnt--;
    }
    
  • 相关阅读:
    Linux let 命令
    perl hash array 嵌套 push
    Perl CGI编程
    Perl关联数组用法集锦
    关于反射和动态代理
    SpringBoot与web开发
    Springboot与日志
    Spring Boot
    SpringBoot的自动配置原理
    Spring MVC执行流程
  • 原文地址:https://www.cnblogs.com/ymyguang/p/12854667.html
Copyright © 2011-2022 走看看