zoukankan      html  css  js  c++  java
  • 动态顺序表操作

    #include <stdio.h>
    #include <malloc.h>
    
    #define InitSize 10
    
    typedef struct{
    	int *data;
    	int MaxSize;
    	int length;
    }SeqList;
    
    void InitData(SeqList&);    //初始化顺序表
    void IncreaseSize(SeqList & , int);    //增加顺序表长度
    void InsertData(SeqList & , int , int);    //插入数据
    int DeleteData(SeqList & , int , int &);    //删除数据
    int SearchData(SeqList , int);    //按位查找数据
    int SearchNum(SeqList , int);    //按值查找数据
    
    int main(void){
    	SeqList line;
    	InitData(line);		//初始化 
    	
    	IncreaseSize(line,5);		//增加顺序表长度 
    	
    	InsertData(line,1,1);		//插入数据
    	InsertData(line,2,2);
    	InsertData(line,3,3);
    	InsertData(line,4,4);
    	InsertData(line,5,5);
    	
    	printf("当前顺序表中的数据是:"); 		//打印顺序表中数据
    	for(int i = 0 ; i < line.length ; i ++){ 
    		printf("%d ",line.data[i]);
    	}
    	
    	printf("
    ");
    	int e = -1;
    	printf("删除的数据是:%d",DeleteData(line,2,e));	//删除数据 
    	
    	printf("
    ");
    	printf("当前顺序表中的数据是:"); 		//打印顺序表中数据
    	for(int i = 0 ; i < line.length ; i ++){ 
    		printf("%d ",line.data[i]);
    	}
    	
    	printf("
    ");
    	printf("查找的数据是:%d",SearchData(line,2));
    	
    	printf("
    ");
    	printf("查找的值在第%d位。",SearchNum(line,4));
    	return 0;
    }
    
    //初始化 
    void InitData(SeqList &L){
    	L.data = (int*)malloc(sizeof(int)*InitSize);
    	L.MaxSize = InitSize;
    	L.length = 0;
    	for(int i = 0 ; i < InitSize ; i ++){
    		L.data[i] = 0;
    	}
    }
    
    //增加顺序表长度
    void IncreaseSize(SeqList &L , int len){
    	int *p = L.data;
    	L.data = (int*)malloc(sizeof(int)*(L.MaxSize+len));
    	for(int i = 0 ; i < L.length ; i ++){
    		L.data[i] = p[i];
    	} 
    	L.MaxSize = L.MaxSize + len;
    	free(p);
    }
    
    //插入数据
    void InsertData(SeqList &L , int m , int n){
    	for(int j = L.length ; j >= m ; j --){
    		L.data[j] = L.data[j-1];
    	}
    	L.data[m-1] = n;
    	L.length ++;
    } 
    
    //删除数据
    int DeleteData(SeqList &L , int m , int &n){
    	n = L.data[m-1];
    	for(int i = m ; i <= L.length ; i ++){
    		L.data[i-1] = L.data[i];
    	}
    	L.length --; 
    	return n;
    }
    
    //按位查找
    int SearchData(SeqList L , int m){
    	return L.data[m-1];
    } 
    
    //按数值查找
    int SearchNum(SeqList L , int n){
    	for(int i = 0 ; i < L.length ; i++){
    		if(L.data[i] == n){
    			return i+1;
    		}
    	}
    	return -1;
    } 
    
  • 相关阅读:
    大学总结(一)
    关于数组名与指针的相互转换
    错误:无法执行操作,因为未将指定的 Storyboard 应用到此交互控件的对象
    延迟初始化 (Lazy Initialization)
    Sql Server 中 GAM、SGAM、PAM、IAM、DCM 和 BCM 的详解与区别
    Xml格式的字符串(string)到DataSet(DataTable)的转换
    Sql Server 内存用不上的解决办法
    Sql Server 管理区分配(GAM,SGAM)和可用空间(PAM)的原理
    Sql Server LightWeight Pooling(纤程) 选项
    在线 Sql Server 服务无法启动的解决办法
  • 原文地址:https://www.cnblogs.com/Timesi/p/12384374.html
Copyright © 2011-2022 走看看