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

简介: 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);
}
目录
相关文章
|
1天前
|
算法
顺序表应用4:元素位置互换之逆置算法
顺序表应用4:元素位置互换之逆置算法
|
7月前
|
存储 算法
数据结构与算法之顺序表详解
数据结构与算法之顺序表详解
25 0
|
1天前
|
存储 算法
【数据结构与算法】3.顺序表
【数据结构与算法】3.顺序表
|
1天前
|
算法 C语言
数据结构与算法顺序表数组版
博主还在学校,写网络编程特别是后面的线程和多路I/O实在是太费精力,所以博主先把数据结构多跟新一点,也正好把学校的C语言数据结构的作业做了,正好一举两得
29 0
|
1天前
|
算法
顺序表应用4-2:元素位置互换之逆置算法(数据改进)
顺序表应用4-2:元素位置互换之逆置算法(数据改进)
|
1天前
|
算法
顺序表应用1:多余元素删除之移位算法
顺序表应用1:多余元素删除之移位算法
|
1天前
|
算法
顺序表应用2:多余元素删除之建表算法
顺序表应用2:多余元素删除之建表算法
|
1天前
|
算法 C语言
【408数据结构与算法】—顺序表的插入、删除和查找(四)
【408数据结构与算法】—顺序表的插入、删除和查找(四)
|
1天前
|
存储 算法
【408数据结构与算法】—顺序表的定义(三)
【408数据结构与算法】—顺序表的定义(三)
|
6月前
|
存储 算法
两道关于顺序表的经典算法
两道关于顺序表的经典算法
22 0