顺序表的的的

简介: 顺序表的的的

点击查看代码


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <malloc.h>
#define TURE    1
#define false   0
#define OK  1
#define ERROR   0
#define OVERFLOW    -2
#define LIST_INIT_SIZE  100
#define LISTINCREAMENT  10
typedef int Status;
typedef int ElemType;
typedef struct
{
    ElemType *elem;
    int length;
    int listsize;
}SqList;
Status InitList(SqList *L);
Status ListInsert(SqList *L,int i,ElemType e);
Status ListDelete(SqList *L,int i,ElemType *e);
void ListOutput(SqList L);
//void User_Choice(int Choice);
Status LocataElem(SqList,ElemType e);
//C = A∩B
SqList Intersection(SqList *LA,SqList *LB);
int main()
{
    SqList L;
    Status flag;
    int n,i,Choice;
    ElemType e;
    //初始化顺序表
    flag = InitList(&L);
    if(flag = OK)
    {
        printf("List init sucess!\n");
    }
    else
        printf("\n Please input %d elements:\n",n);
     printf("Choice:1,2,3,4,5,6....");\
     scanf("%d",&Choice);
     switch(Choice)
     {
         case 1://插入
             {
                 printf("input n:");
                 scanf("%d",n);
                 printf("\nPlease intput %d elements:\n");
                 for(i = 1;i<=n;i++)
                 {
                     scanf("%d",&e);
                     flag = ListInsert(&L,i,e);
                 }
             };break;
         case 2://输出
             {
                 printf("\n The elements of list are:\n");
                 ListOutput(L);
             } ;break;
         case 3://查找
             {
                 printf("\nIput the element to be queried:");
                 scanf("%d",&e);
                 i=0;
                 i=LocataElem(L,e);
                 printf("Its index is %d.",i);
             };break;
         case 4://删除
             {
                 printf("\n Input the index of element to be deleted:");
                 scanf("%d",&i);
                 flag = ListDelete(&L,i,&e);
                 printf("the deleted element is %d:\n",e);
             };break;
         case 5: ;break;
         case 6: ;break;
     }
    return 0;
}
//初始化为空的顺序表
Status InitList(SqList *L)
{
    L->elem = (ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
    if(!L->elem)
        exit(OVERFLOW);
    L->length = 0;
    L->listsize = LIST_INIT_SIZE;
}
Status ListInsert(SqList *L,int i,ElemType e)
{
    ElemType *newbase,*q,*p;
    if(i<1 || i>L->length+1)
        return ERROR;
    if(L->length>=L->listsize)
    {
        newbase = (ElemType*)realloc(L->elem,(L->listsize+LISTINCREAMENT)*sizeof(ElemType));
        if(newbase == NULL) exit(OVERFLOW);
        L->elem = newbase;
        L->listsize = L->listsize +LISTINCREAMENT;
    }
    q = &(L->elem[i-1]);
    for(p = &L->elem[L->length-1];p>=q;--p)
        *(p+1) = *p;
        *q = e;
        ++L->length;
        return OK;
}
void ListOutput(SqList L)
{
    int i;
    if(L.length == 0)
        printf("List is null!\n");
    else
    {
        for(i=0;i<L.length;i++)
            printf("%d",L.elem[i]);
        printf("\n");
    }
}
Status LocataElem(SqList L,ElemType e)
{
    int i = 0;
    while(i<=L.length-1 &&L.elem[i]!=e)
        i++;
    if(i<=L.length - 1)
        return i;
    else
        return -1;
}
Status ListDelete(SqList *L,int i,ElemType *e)
{
    ElemType *p,*q;
    if(i<1 || i>L->length) exit(ERROR);
    p = &L->elem[i-1];
     *e = *p;
    q = L->elem+L->length-1;
    for(++p;p<=q;p++)
    {
        *(p-1) = *p;
    }
    --L->length;
    return OK;
}
SqList Intersection(SqList *LA,SqList *LB)
{
    SqList LC;
    InitList(&LC);
    int i,e;
    for(i=0;i<LA->length;i++)
    {
        LC.elem[i] =LA.elem[i];
        LC->length++;
    }
    for()
}

相关文章
|
2月前
|
消息中间件 缓存 负载均衡
构建高效可扩展的后端架构:从设计到实现
本文探讨了如何构建高效、可扩展的后端架构,涵盖需求分析、系统设计、实现与优化全过程。内容包括微服务、数据库设计、缓存与消息队列等关键技术,并涉及API设计、自动化测试、CI/CD及性能优化策略,助力打造高性能、易维护的后端系统。
|
Linux 开发工具 Android开发
FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher
EasyPusher是一款国产RTSP直播录制推流客户端工具,支持Windows、Linux、Android及iOS等系统。尽管其GitHub仓库(安卓版:https://github.com/EasyDarwin/EasyPusher-Android)已多年未更新,但通过一系列改造,如升级SDK版本、迁移到AndroidX、指定本地NDK版本及更新Gradle版本等,仍可在最新Android Studio上运行。以下是针对Android Studio Dolphin版本的具体改造步骤。
179 3
FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher
|
11月前
|
小程序 数据可视化 数据管理
小程序可视化设计工具-支持一键导出小程序,WebApp及后台管理
小程序可视化设计工具-支持一键导出小程序,WebApp及后台管理
232 3
|
11月前
|
芯片
【寄存器开发速成】半小时入门STM32寄存器开发(一)
【寄存器开发速成】半小时入门STM32寄存器开发(一)
346 0
默认移动构造、默认移动赋值自动生成的条件
默认移动构造、默认移动赋值自动生成的条件
329 0
|
程序员 C语言
深入理解C语言中的for循环
深入理解C语言中的for循环
488 2
|
数据采集 前端开发 JavaScript
HTML + CSS + JS 利用邮编查询 API 实现邮编查询工具
邮政编码是地址信息的重要组成部分,可以帮助快递公司、物流公司等对地址进行快速、准确的识别和派送。因此,邮编查询工具应用在许多业务场景中都有广泛的应用,例如:电商平台、物流公司、金融机构等。通过使用邮编查询 API,我们可以快速实现一个邮编查询工具应用,方便用户查询地址对应的邮政编码,提高业务流程的效率。
831 0
|
XML 存储 Web App开发
技术笔记:UserData使用总结
技术笔记:UserData使用总结
428 0
|
机器学习/深度学习 存储 人工智能
基于深度学习的乳腺癌智能检测分割与诊断系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割、人工智能(1)
基于深度学习的乳腺癌智能检测分割与诊断系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割、人工智能
|
Cloud Native Dubbo Java
如何确定微服务项目中Spring Boot、Spring Cloud、Spring Cloud Alibaba三者之间的版本
如何确定微服务项目中Spring Boot、Spring Cloud、Spring Cloud Alibaba三者之间的版本
523 0