zoukankan      html  css  js  c++  java
  • 顺序表的实现,在vs2019上运行成功

    // ConsoleApplication8.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
    //

    #include <stdio.h>
    #include <stdlib.h>
    #define MaxSize 50
    typedef char DataType;
    typedef struct node
    {
    DataType data[MaxSize];
    int length;
    }Lnode, * List; //结构体的类型定义

    //初始化顺序表
    void Init_List(List L) //用List结构体类型定义一个结构体变量L
    {
    L->length = 0;
    }

    //顺序表的长度
    int Length_List(List L)
    {
    return L->length;
    }

    //取顺序表中的某个元素
    DataType Get_List(List L, int i, DataType x)
    {
    if (i<1 || i> L->length)
    printf("fine error!");
    else
    x = L->data[i - 1];
    return x;
    }

    //查找顺序表中值为x的元素,返回其序号
    int Location_List(List L, DataType x)
    {
    int i = 0;
    while (i < L->length && L->data[i] != x)
    i++;
    if (i == L->length)
    return -1;
    else
    return i + 1;
    }

    //在线性表的第i个位置插入值为x的元素
    void Insert_List(List L, int i, DataType x)
    {
    int j;
    if (i<1 || i>L->length + 1)
    printf("插入位置错误!!! ");
    else
    {
    for (j = L->length; j >= i; j--)
    L->data[j] = L->data[j - 1];
    L->data[i - 1] = x;
    }
    L->length++;
    }

    //删除线性表第i个位置上的元素
    void Delete_List(List L, int i)
    {
    int j;
    if (i<1 || i>L->length)
    printf("此位置没有数据可以删除!!!");
    else
    {
    for (j = i; j < L->length; j++)
    L->data[j - 1] = L->data[j];
    L->length--;
    }
    }

    //输出顺序表
    void Print_List(List L)
    {
    int i;
    for (i = 1; i < L->length; i++)
    printf("%c->", L->data[i - 1]);
    printf("%c", L->data[L->length - 1]);
    }

    /////////////主函数/////////////
    int main()
    {
    int i = 1, n;
    Lnode L;
    char ch, x;
    Init_List(&L);
    printf(" ****************顺序表演示程序**************** ");
    printf("请输入顺序表的元素,以#结束:");
    ch = getchar();
    while (ch != '#')
    {
    Insert_List(&L, i, ch);
    i++;
    ch = getchar();
    }
    printf("顺序表为:");
    Print_List(&L);
    printf(" ");
    printf("该顺序表的长度为:%d", L.length);
    printf(" ");

    //fflush(stdin);
    printf(" ");
    printf("输入要查找的元素:");
    //fflush(stdin);
    getchar();
    x = getchar();
    //scanf("%c", &x);
    printf("该元素为%c序位为%d", x, Location_List(&L, x));
    printf(" ");

    printf("请输入要查找的元素的序位:");
    scanf_s("%d", &n);
    printf("第%d个位置对应的元素是:%c", n, Get_List(&L, n, x));
    printf(" ");

    printf("输入要插入的元素及其序位:<用逗号隔开>");
    //fflush(stdin); //接收回车这个字符
    getchar();
    scanf("%c,%d", &x, &n);
    Insert_List(&L, n, x);
    printf("插入元素后的顺序表为:");
    Print_List(&L);

    printf(" ");
    printf("请输入要删除的元素序位:");
    scanf("%d", &n);
    Delete_List(&L, n);
    printf(" 删除后的线性表为:");
    Print_List(&L);
    printf(" ");

    return 1;


    }

    // 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
    // 调试程序: F5 或调试 >“开始调试”菜单

    // 入门使用技巧:
    // 1. 使用解决方案资源管理器窗口添加/管理文件
    // 2. 使用团队资源管理器窗口连接到源代码管理
    // 3. 使用输出窗口查看生成输出和其他消息
    // 4. 使用错误列表窗口查看错误
    // 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
    // 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件

  • 相关阅读:
    wes7配置
    一个很牛逼的工具XueTr
    构造一个好控制一点的长期工作线程
    SmartGit初步使用
    Android开发(一):环境搭建
    zabbix使用短信猫实现报警
    Build Libsvm to dll
    Using OpenCV in VS2012
    My Overlay Icons is Missing
    用Eclipse开发C、C++
  • 原文地址:https://www.cnblogs.com/duanqibo/p/13056214.html
Copyright © 2011-2022 走看看