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

简介: 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);
}
目录
相关文章
|
4月前
|
存储 缓存 算法
数据结构和算法学习记录——总结顺序表和链表(双向带头循环链表)的优缺点、CPU高速缓存命中率
数据结构和算法学习记录——总结顺序表和链表(双向带头循环链表)的优缺点、CPU高速缓存命中率
41 0
|
2月前
|
存储 算法
【数据结构与算法】顺序表
【数据结构与算法】顺序表
17 0
【数据结构与算法】顺序表
|
2月前
|
存储 算法
【初阶数据结构篇】顺序表和链表算法题
此题可以先找到中间节点,然后把后半部分逆置,最近前后两部分一一比对,如果节点的值全部相同,则即为回文。
|
3月前
|
存储 算法
顺序表经典算法
顺序表经典算法
|
4月前
|
存储 机器学习/深度学习 算法
【数据结构与算法】:手搓顺序表(Python篇)
【数据结构与算法】:手搓顺序表(Python篇)
|
4月前
|
存储 算法 C++
【数据结构与算法】:带你手搓顺序表(C/C++篇)
【数据结构与算法】:带你手搓顺序表(C/C++篇)
|
4月前
|
存储 算法
【C/数据结构与算法】:顺序表的实现
【C/数据结构与算法】:顺序表的实现
32 0
|
4月前
|
算法
数据结构和算法学习记录——复习静态顺序表的两个接口函数(在指定位置插入数据,在指定位置删除数据)
数据结构和算法学习记录——复习静态顺序表的两个接口函数(在指定位置插入数据,在指定位置删除数据)
18 0
|
4月前
|
存储 算法
数据结构和算法学习记录——线性表之单链表(上)-初始单链表及其尾插函数(顺序表缺陷、单链表优点、链表打印)
数据结构和算法学习记录——线性表之单链表(上)-初始单链表及其尾插函数(顺序表缺陷、单链表优点、链表打印)
31 0
|
4月前
|
存储 算法
数据结构和算法学习记录——线性表之顺序表(顺序表概念、结构、顺序表接口函数-头插头删、尾插尾删)
数据结构和算法学习记录——线性表之顺序表(顺序表概念、结构、顺序表接口函数-头插头删、尾插尾删)
21 0
下一篇
无影云桌面