当前位置:编程学习 > C/C++ >>

用数组实现线性表各种操作(C语言)完结

 

排序使用简单的插入排序实现:

C代码 

void one_sort(int *sqList,int val,int len) 

     int pos=len; 

     int temp=val; 

     while(val<sqList[pos-1]&&pos>0) 

     { 

        sqList[pos]=sqList[pos-1]; 

        pos--; 

         

     }  

     sqList[pos]=temp; 

      

//直接插入排序实现 

void straisort(struct Arr * pArr) 

      

     for(int i=1;i<pArr->cnt;i++) 

     { 

        one_sort(pArr->pBase,pArr->pBase[i],i);//调用单步排序 

     } 

}  

 

直接插入排序通用算法:

C代码 

void one_sort(int *sqList,int val,int len) 

     int pos=len; 

     int temp=val; 

     while(val<sqList[pos-1]&&pos>0) 

     { 

        sqList[pos]=sqList[pos-1]; 

        pos--; 

         

     }  

     sqList[pos]=temp; 

      

//直接插入排序实现 

void straisort(int *arr,int len) 

     int i; 

     for(i=1;i<len;i++) 

     { 

        one_sort(arr,arr[i],i);//调用直接插入排序 

     } 

}  

 

 

 线性表的操作数组实现代码如下,当然功能并不全面,等待以后收集

 

C代码 

/*

线性结构数组的实现

*/ 

#include <stdio.h> 

#include <malloc.h>  //包含了malloc函数 

#include <stdlib.h>  //包含了exit函数  

 

//首先定义描述数组信息的结构体类型 

struct Arr 

  int * pBase;//存放数组首地址的指针变量 

  int len;//数组长度 

  int cnt;//数组中元素的个数 

}; 

 

//定义数组的基本操作的函数声明 

void init_arr(struct Arr * pArr,int length);//数组初始化 

bool append_arr(struct Arr * pArr,int val);//追加元素 

bool insert_arr(struct Arr * pArr,int index ,int val);//插入元素 

bool delete_arr(struct Arr * pArr, int pos, int * pVal);//删除元素 

int get(struct Arr *pArr,int index); //得到元素 

bool is_empty(struct Arr * pArr);//判断是否为空 

bool is_full(struct Arr * pArr);//判断是否已满 

void show_arr(struct Arr * pArr);//遍历数组 

void inversion_arr(struct Arr * pArr);//数组倒置 

void one_sort(int *sqList,int val,int len);//单步排序声明 

void straisort(struct Arr * pArr);//直接插入排序声明 

 

int main(void) 

    struct Arr arr; 

    init_arr(&arr,6);//初始化函数测试 

    //show_arr(&arr); 

    append_arr(&arr,3); 

    append_arr(&arr,2); 

    append_arr(&arr,9); 

    insert_arr(&arr,2,7); 

    show_arr(&arr); 

    return 0; 

 

//初始化数组的函数实现  pArr是结构体变量arr的指针 

void init_arr(struct Arr * pArr,int length) 

   pArr->pBase=(int *)malloc(sizeof(int)*length);//malloc()函数头文件声明 

   if(NULL==pArr->pBase) 

   { 

      printf("动态内存分配失败!\n"); 

      exit(-1);//要在头文件声明 

   } 

   else 

   { 

     pArr->len=length; 

     pArr->cnt=0; 

   } 

 

//遍历数组函数实现 

void show_arr(struct Arr * pArr) 

    if(is_empty(pArr)) 

    { 

       printf("数组为空\n"); 

    } 

    else 

    { 

      for(int i=0;i<pArr->cnt;i++) 

      { 

        printf("%d",pArr->pBase[i]); 

      } 

    } 

    

//判断数组是否为空 

bool is_empty(struct Arr * pArr) 

   if(pArr->cnt==0) 

    

       return true; 

   else 

    

       return false; 

    

//数组追加元素 

bool append_arr(struct Arr * pArr,int val) 

  if(pArr->cnt < pArr->len) 

  { 

    pArr->pBase[pArr->cnt]=val; 

    (pArr->cnt)++; 

    return true; 

  } 

  else 

     printf("数组已满\n"); 

    return false; 

//插入元素 

bool insert_arr(struct Arr * pArr,int index ,int val) 

   if(pArr->cnt<pArr->len&&index<=pArr->cnt) 

   { 

       for(int i=pArr->cnt-1;i>=index-1;i--) 

       { 

         pArr->pBase[i+1]=pArr->pBase[i]; 

          

          

       } 

       pArr->pBase[index-1]=val; 

       (pArr->cnt)++; 

       return true; 

   } 

   else 

   { 

       printf("

补充:软件开发 , C语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,