malloc+顺序表(查找,插入,删除)

1.用户输入时是以回车键(’\n')结束输入,但在C和C++中,字符串内部使用('\0')来表示字符串的结束。getline 函数从输入流中读取一行文本,直到遇到换行符(\n),然后将其替换为字符串终止符(\0),确保字符串能够正确处理。

2.malloc函数

头文件:#include <stdlib.h>

调用:int* arr=(int*)malloc(n*sizeof(int));

           n*sizeof(int):表示需要分配n个int类型的内存空间

           int*将malloc返回的void指针转换为int*类型

检查返回值:

                       if(arr==NULL){

                   }

使用分配的内存:

                        for(int i=0;i<n;i++){

                                        scanf("%d",&arr[i]);

                      }

释放内存:

free(arr);

3.指针-指针

指针-指针得到的是两个元素之间的个数

指针和指针相减的前提是:

两个指针指向同一块空间。

4.顺序表

​
​
#include<iostream>
#include<cstdlib>
using namespace std;
#define maxsize  100
struct sqlist{
    int n;
    int date[maxsize];
};
int find(sqlist l,int x){
       int i;
        for(i=0;i<l.n;i++){
            if(l.date[i]>x){
                return i;
            }
        }
        return i;
}
void insert(sqlist&l,int y){
    int p,i;
    p=find(l,y);
    for(i=l.n-1;i>=p;i--){
        l.date[i+1]=l.date[i];
    }
    l.date[p]=y;
    l.n++;
}
int find1(sqlist &l,int x){
    for(int i=0;i<=l.n;i++){
        if(l.date[i]==x){
            return i;
        }
    }
    return -1;
}
void insert1(sqlist&l,int p,int x){
    for(int i=l.n;i>=p;i--){
        l.date[i+1]=l.date[i];
    }
    l.date[p]=x;
    l.n++;
}
void deletes(sqlist&l,int g){
    for(int i=g;i<l.n-1;i++){
        l.date[i]=l.date[i+1];
    }
    l.n--;
}
int main(){
    sqlist l;
    int n;
    cin>>n;
    l.n=n;
    for(int i=0;i<n;i++){
        l.date[i]=i;
    }
    insert(l,15);
    for(int i=0;i<=n;i++){
        cout<<l.date[i]<<" ";
    }
    cout<<endl;

    int lll=find1(l,6);
    cout<<lll<<endl;

    insert1(l,4,6);
    for(int i=0;i<l.n;i++){
        cout<<l.date[i]<<" ";
    }
    cout<<endl;

    deletes(l,4);
    for(int i=0;i<l.n;i++){
        cout<<l.date[i]<<" ";
    }
    return 0;
}

​

​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值