实现顺序表的各种基本算法

简介: C语言顺序表实现

编写一个程序实现以下功能:

头文件

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef int ElemType;


1.初始化顺序表L

2.依次插入a,b,c,d,e元素

void CreateList(List * L,ElemType a[],int n){
   
    int i = 0,k = 0;
    while (i < n){
   
        L -> data[k] = a[i];
        k++; i++;
    }
    L -> length = k;
}



3.输出顺序表元素及其长度

void DisList(List * L){
   
    printf("输出线性表:\n");
    for (int i = 0; i < L -> length; ++i) {
   
        printf("%c  ",L -> data[i]);
    }
    printf("\n元素个数为:%d\n",L -> length);
}



4.判断顺序表是否为空


​
bool EmptyList(List * L){
   
    if(L -> length)
        printf("顺序表不为空\n");
    else
        printf("顺序表空的\n");
    return L -> length;
}



5.输出顺序表第3个元素


​
bool GetListR(List * L,int i,ElemType x){
   
    if(i <= 0 || i > L -> length) return false;
    i--;
    x = L -> data[i];
    printf("第%d个是%c\n",i + 1,x);
    return true;
}



6.输出a的位置

void GetListF(List * L,ElemType x){
   
    int i = 0;
    while (i < L -> length && L -> data[i] != x){
   
        i++;
    }
    if(i == L -> length)
        printf("%c不存在",x);
    else{
   
        i++;
        printf("%c在第%d位\n",x,i);
    }
}



7.在第4个位置上插入f


​
bool InsertList(List * L,int i,ElemType x){
   
    if(i <= 0 || i > L -> length){
   
        printf("位置不合法\n");
        return false;
    }
    i--;
    int j = L -> length;
    while (j > i){
   
        L -> data[j] = L -> data[j - 1];
        j--;
    }
    L -> data[i] = x;
    L -> length++;
    printf("%c插入成功\n",x);
    return true;
}



8.输出顺序表L

9.删除顺序表L的第3个元素


​
bool DeleteList(List * L,int i,ElemType x){
   
    if(i <= 0 || i > L -> length){
   
        printf("位置不合法\n");
        return false;
    }
    int j = i;
    i--;
    x = L -> data[i];
    while (j < L -> length){
   
        L -> data[j - 1] = L -> data[j];
        j++;
    }
    L -> length--;
    printf("第%d位元素是%c,删除成功\n",i+ 1,x);
    return true;
}



10.输出并释放顺序表L

void DestroyList(List * L){
   
    printf("销毁成功\n");
    free(L);
}



主函数:

int main(){
   
    List *L;
    L = (List * ) malloc(sizeof(List));
    L -> length = 0;
    ElemType ch[5] = {
   'a','b','c','d','e'};
    printf("插入对应元素:\n");
    CreateList(L,ch,5);
    DisList(L);
    EmptyList(L);
    ElemType x;
    GetListR(L,3,x);
    GetListF(L,'a');
    InsertList(L,5,'f');
    DisList(L);
    DeleteList(L,3,x);
    DisList(L);
    DestroyList(L);
}
目录
相关文章
|
17天前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之顺序表【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找等具体详解步骤以及举例说明
|
17天前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之顺序表习题精讲【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找习题精讲等具体详解步骤以及举例说明
|
1月前
|
算法
【顺序表】算法题 --- 力扣
【顺序表】算法题 --- 力扣
|
1月前
|
算法 Java 测试技术
数据结构 —— Java自定义代码实现顺序表,包含测试用例以及ArrayList的使用以及相关算法题
文章详细介绍了如何用Java自定义实现一个顺序表类,包括插入、删除、获取数据元素、求数据个数等功能,并对顺序表进行了测试,最后还提及了Java中自带的顺序表实现类ArrayList。
19 0
|
3月前
|
存储 算法
【数据结构与算法】顺序表
【数据结构与算法】顺序表
24 0
【数据结构与算法】顺序表
|
3月前
|
存储 算法
【初阶数据结构篇】顺序表和链表算法题
此题可以先找到中间节点,然后把后半部分逆置,最近前后两部分一一比对,如果节点的值全部相同,则即为回文。
30 0
|
4月前
|
存储 算法
顺序表经典算法
顺序表经典算法
|
5月前
|
存储 机器学习/深度学习 算法
【数据结构与算法】:手搓顺序表(Python篇)
【数据结构与算法】:手搓顺序表(Python篇)
|
5月前
|
存储 算法 C++
【数据结构与算法】:带你手搓顺序表(C/C++篇)
【数据结构与算法】:带你手搓顺序表(C/C++篇)
|
5月前
|
存储 算法
【C/数据结构与算法】:顺序表的实现
【C/数据结构与算法】:顺序表的实现
35 0