顺序表的C语言实现

#include<stdio.h>
#include<stdbool.h>//c语言引用bool类型
#define Maxsize 20
typedef struct{
    int data[Maxsize];
    int length;
}SeqList;
/*定义一个动态顺序表,动态顺序表并不是说可以动态加载,他只是会在数据结构占满时,开辟一一块更大的存储空间,达到替换的目的
#define Initsize 100;
typedef struct{
    Elemtypedef *data;
    int length,Maxsize;
}
*/
void init(SeqList *L)
{
    int a;
    (*L).length=0;
    scanf("%d",&a);
    int i=0;
    while(a!=999)
    {
        (*L).data[i]=a;
        i++;
        scanf("%d",&a);
        (*L).length+=1;
    }
}
//在顺序表的第i个位置插入新元素e
bool Insert(SeqList *L,int i,int e)
{
    if(i<1||i>(*L).length+1)
        return false;
    if((*L).length>=Maxsize)
        return false;
    int j=(*L).length;
    //逻辑上从1开始,但实际存储时从a[0]开始
    while(j>=i-1)
    {
        int k=j+1;
        (*L).data[k]=(*L).data[j];
        j--;
    }
    (*L).data[i-1]=e;
    (*L).length++;
    return true;
}
//删除表中第i个位置的元素,用引用变量e返回
bool delete(SeqList *L,int i,int *e)
{
    if(i<1||i>(*L).length+1)
        return false;
    *e=(*L).data[i-1];
    int j=i;
    while(j>=i&&j<=(*L).length)
    {
        (*L).data[j-1]=(*L).data[j];
        j++;
    }
    (*L).length--;
    return true;
}
//在顺序表中查找第一个元素值等于e的元素,并返回其位序
int LocateElem(SeqList L,int e)
{
    int i=0;
    while(i<=L.length)
    {
        if(L.data[i]==e)
         return i+1;
        i++;
    }
    return 0;
}
bool printlist(SeqList L){
    if (L.length==0)
        return false;
    int i=0;
    while(i<L.length)
    {
        printf("%d ",L.data[i]);
        i++;
    }
    printf("\n");
    return true;
}
int main()
{
    SeqList L;
    printf("请输入待处理的顺序表,以“1 2 3”输入,结束时输入999");
    init(&L);
    printlist(L);
    Insert(&L,3,15);
    printlist(L);
    int e;
    delete(&L,5,&e);
    printlist(L);
    int d=LocateElem(L,5);
    printf("%d",d);
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 101通报协议中的报文格式包括以下几个部分: 1. 头部(Header):包含了通报的类型、版本、时间戳等信息。 2. 身体(Body):包含了通报的具体内容,通常是一个结构化的数据格式,如JSON。 3. 尾部(Footer):包含了通报的校验和等辅助信息,以确保通报的完整性和正确性。 4. 附件(Attachment):附件是可选的,用于携带一些额外的数据,如图片、音频等。 总体上,101通报协议的报文格式具有简洁、高效、易于扩展等特点,能够满足大多数物联网应用场景的需求。 ### 回答2: 101通讯协议中的报文格式主要有三种:头部格式、数据格式和尾部格式。 首先是头部格式。头部格式包含了报文的标识信息和控制信息。其中,标识信息用于唯一标识报文的身份,通常包括报文序号、源地址和目的地址等;控制信息用于指示报文的类型和处理方式,常见的控制信息有报文类型、报文长度、校验位等。 其次是数据格式。数据格式用于存储和传输报文中的具体数据。数据格式可以根据实际需要进行设计和定义常见的数据格式有文本格式、二进制格式、JSON格式等。不同类型的数据格式可以根据应用场景的不同选择合适的方式进行传输和解析。 最后是尾部格式。尾部格式主要用于校验报文的完整性和准确性。通过在报文尾部添加校验位或者校验码的方式来进行校验,确保报文在传输过程中没有出现错误或丢失。常见的尾部格式有循环冗余校验(CRC)、哈希校验等。 总结起来,101通讯协议中的报文格式由头部格式、数据格式和尾部格式组成。头部格式包含了标识信息和控制信息,数据格式用于存储和传输具体数据,尾部格式用于校验报文的完整性和准确性。这些格式的设计和定义可以根据具体的通讯需求和协议要求进行选择和制定。 ### 回答3: 101通讯协议中的报文格式有以下几种。首先是请求报文格式,它包含一个请求行、请求头和请求体。请求行包含请求方法、请求URL协议版本。请求头包含一系列的键值对,用于描述请求的附加信息。请求体用于传递请求的实体数据。其次是响应报文格式,它由响应行、响应头和响应体组成。响应行包含协议版本、状态码和状态描述。响应头包含一系列的键值对,用于描述响应的附加信息。响应体用于传递响应的实体数据。另外还有升级请求报文格式和升级响应报文格式。升级请求报文格式用于向服务器发起协议升级请求,包含一个升级头,用于指定要升级的协议。升级响应报文格式用于服务器对升级请求的响应,包含一个升级头,用于指定服务器同意的协议。还有WebSocket帧格式,它用于在WebSocket连接中传输数据。WebSocket帧包含一个固定长度的首部和可选的负载数据。首部包含了数据的长度、类型和标志位等信息。以上是101通讯协议常见的报文格式,不同的应用场景和需求可能会有一些定制的报文格式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值