C语言及程序设计提高例程-26 实现线性表基本操作的函数

贺老师教学链接  C语言及程序设计提高 本课讲解

删除指定位置上的数据

#include <stdio.h>
#define SIZE 100
int deleteData(int[], int, int);
int n=10;  //数组中实际有用元素
int main()
{
    int d[SIZE]= {1,3,9,12,32,41,45,62,75,77};
    int locate, i;
    scanf("%d", &locate);
    //删除locate处的数据
    n=deleteData(d, n, locate);
    //输出删除后的结果
    for(i=0; i<n; ++i)
        printf("%d ", d[i]);
    printf("\n");
    return 0;
}

/*
功能:删除数组中指定位置上的元素
入口参数: 数组名、数组大小、要删除元素的位置
返回值:删除后数组的大小
*/
int deleteData(int arr[], int len, int loc)
{
    int i = loc;
    //在要删除的位置上写入其后的数据(覆盖)
    while(i<len-1)
    {
        arr[i] = arr[i+1];
        i++;
    }
    //删除数据后,数组大小缩减
    len--;
    return len;
}

在指定位置插入值

#include <stdio.h>
int insertData(int[], int, int, int);
#define SIZE 100
int n=10;  //数组中实际有用元素
int main()
{
    int d[SIZE]= {1,3,9,12,32,41,45,62,75,77};
    int locate, value, i;
    scanf("%d %d", &locate, &value);
    //在locate位置处插入value
    n = insertData(d, n, locate, value);
    //输出插入后的结果
    for(i=0; i<n; ++i)
        printf("%d ", d[i]);
    printf("\n");
    return 0;
}
/*
功能:在长度为len的数组arr的loc位置处插入值v
入口参数:数组名、长度、位置和要插入的值
返回值:插入数据后的长度
*/
int insertData(int arr[], int len, int loc, int v)
{
    int i = len;
    //先将loc后的数字,统统后移
    while(i>loc)
    {
        arr[i] = arr[i-1];
        i--;
    }
    //在i==loc处写入value
    arr[i] = v;
    len++;
    return len;
}

合并两个有序数组

#include <stdio.h>
int mergeData(int[], int, int[], int, int[]);
#define SIZE 100
int n1=10,n2=7,n3=0;  //数组中实际有用元素
int main()
{
    int d1[SIZE]= {1,3,9,12,32,41,45,62,75,77};
    int d2[SIZE]= {2,11,24,56,76,82,94};
    int d3[SIZE*2];
    int i;
    //合并有序数组
    n3=mergeData(d1, n1, d2, n2, d3);
    //输出合并后的结果
    for(i=0; i<n3; ++i)
        printf("%d ", d3[i]);
    printf("\n");
    return 0;
}
/*
功能:将长度为l1的有序数组a1和长度为l2的有序数组a2,合并为新的有序数组a3
入口参数:待合并的有序数组名及长度,及合并后保存数据的数组名
返回值:合并后的有序数组长度
*/
int mergeData(int a1[], int l1, int a2[], int l2, int a3[])
{
    int i=0,j=0,k=0;
    while(i<l1 && j<l2)
    {
        if(a1[i]<a2[j])
            a3[k++]=a1[i++];
        else
            a3[k++]=a2[j++];
    }
    while(i<l1)
        a3[k++]=a1[i++];
    while(j<l2)
        a3[k++]=a2[j++];
    return k;
}
时间: 2024-10-25 06:09:52

C语言及程序设计提高例程-26 实现线性表基本操作的函数的相关文章

C语言及程序设计提高例程-24 数组名作为函数参数

贺老师教学链接  C语言及程序设计提高 本课讲解 用数组元素作函数实参 #include <stdio.h> int gcd(int m,int n) { int r; while(r=m%n) { m=n; n=r; } return n; } int main() { int i; int a[8]= {26,1007,956,705,574,371,416,517}; int b[8]= {994,631,772,201,262,763,1000,781}; int c[8]; for(

C语言及程序设计提高例程-29 实战字符串处理四例

 贺老师教学链接  C语言及程序设计提高 本课讲解 实战:字符串有多长 #include <stdio.h> int main() { char str[50]; int n=0; printf("输入字符串:"); gets(str); while(str[n]!='\0') { n++; } printf("这一句中有 %d 个字符.\n", n); return 0; } 实战:统计数字字符个数 #include <stdio.h>

C语言及程序设计提高例程-15 小小型应用系统开发指导(三)

贺老师教学链接  C语言及程序设计提高 本课讲解 说明:     本程序在学习者仅掌握了基本数据类型和控制结构.函数的前提下设计,模拟银行储蓄系统的基本功能.     程序运行前,请在程序所在文件夹中,自建文件password.txt,保存123456作为初始密码,自建文件balance.dat,保存1000,作为初始的余额.    运行结束后,对数据所做的所有修改均可以利用文件保存下来.     与上一个版本相比,我们学习了模块化程序设计及用函数的实现方法,所以有能力重构了整个软件的结构.本程

C语言及程序设计提高例程-25 指针作函数参数

贺老师教学链接  C语言及程序设计提高 本课讲解 例:冒泡排序函数的新写法 #include <stdio.h> void bubblesort(int*, int); int main( ) { int i,a[10]= {3,5,9,1,3,6,-9,-7,10,12}; bubblesort(a,10); for(i=0; i<10; i++) printf("%d ", a[i]); return 0; } void bubblesort(int *p, in

C语言及程序设计提高例程-16 数组的引入

贺老师教学链接  C语言及程序设计提高 本课讲解 引子:求5位同学的平均成绩 #include <stdio.h> int main( ) { int a1, a2, a3, a4, a5; int total=0, ave; scanf("%d %d %d %d %d", &a1,&a2,&a3,&a4,&a5); total+=a1; total+=a2; total+=a3; total+=a4; total+=a5; ave=

C语言及程序设计提高例程-35 使用指针操作二维数组

贺老师教学链接  C语言及程序设计提高 本课讲解 使用指向二维数组元素的指针 #include <stdio.h> int main( ) { int a[3][4]= {1,3,5,7,9,11,13,15,17,19,21,23}; int *p; for(p=a[0]; p<a[0]+12; p++) { printf("%3d ",*p); } return 0; } 使用指向一维数组的指针 #include <stdio.h> int main(

C语言及程序设计提高例程-36 多维数组作函数参数

贺老师教学链接  C语言及程序设计提高 本课讲解 用多维数组名作函数参数 #include <stdio.h> int max_value(int array[][4]); int main( ) { int a[3][4]= {{11,32,45,67},{22,44,66,88},{15,72,43,37}}; printf("max value is %d\n", max_value(a)); return 0; } int max_value(int array[]

C语言及程序设计提高例程-12 变量的存储类别

贺老师教学链接  C语言及程序设计提高 本课讲解 用extern声明外部变量:一个文件内的全局变量 #include <stdio.h> int max(int,int); int main( ) { extern int a,b; //对全局变量a,b作提前引用声明 printf("%d\n", max(a,b)); return 0; } int a=15,b=-7; //定义全局变量a,b int max(int x,int y) { int z; z=x>y?

C语言及程序设计提高例程-2 模块化程序设计及C语言中的函数

贺老师教学链接  C语言及程序设计提高 本课讲解 我们写过这样的程序 #include <stdio.h> int main() { int iChioce; do { printf("* 1. 吃饭\n"); printf("* 2. 睡觉\n"); printf("* 3. 打豆豆\n"); printf("* 0. 退出\n"); printf("* 请选择(0-3):"); scanf(