zoukankan      html  css  js  c++  java
  • 顺序线性表

    #include <stdio.h>  

    #include "SqList.h"

    int main(void)
    {
    int num = 0;
    char e;
    SqList L;

    InitList(&L);

    //插入元素
    InsElem(&L, 'a', 1);
    InsElem(&L, 'b', 2);
    InsElem(&L, 'c', 3);
    InsElem(&L, 'd', 4);
    InsElem(&L, 'e', 5);
    InsElem(&L, 'f', 6);
    InsElem(&L, 'g', 7);
    InsElem(&L, 'h', 8);
    InsElem(&L, 'i', 9);

    printf("线性表:");
    DispList(L);
    printf("长度:");
    printf("%d", GetLength(L));
    printf("/n");

    num = 3;
    GetElem(L, num, &e);
    printf("第%d个元素:%c/n",num, e);

    e = 'd';
    printf("元素%c是第%d个元素/n", e, Locate(L, e));

    num = 4;
    printf("删除第%d个元素/n", num);
    DelElem(&L, num);
    printf("线性表:");
    DispList(L);
    printf("长度:");
    printf("%d", GetLength(L));
    printf("/n");



    return 0;
    }


    [cpp] view plaincopyprint?
    #ifndef SQLIST
    #define SQLIST

    #define MAX_SIZE 100

    typedef struct{
    char data[MAX_SIZE];
    int length;
    }SqList;

    extern void InitList(SqList *L); //初始化线性表
    extern int GetLength(SqList L); //求线性表的长度
    extern int GetElem(SqList L, int num, char *e); //求线性表中第i个元素
    extern int Locate(SqList L, char x); //按值查找元素
    extern int InsElem(SqList *L, char x, int num); //插入元素
    extern int DelElem(SqList *L, int num); //删除元素
    extern void DispList(SqList L); //输出元素值



    #endif

    [cpp] view plaincopyprint?
    #include "SqList.h"

    /*********************************************************
    ** 函数名:void InitList(SqList *L)
    ** 功能: 初始化线性表
    ** 描述: 长度初始化为0
    ** 作者: 庞辉
    *********************************************************
    */

    void InitList(SqList *L)
    {
    L->length = 0;
    }

    /*********************************************************
    ** 函数名:int GetLength(SqList L)
    ** 功能: 求线性表的长度
    ** 描述: 无
    ** 作者: 庞辉
    *********************************************************
    */

    int GetLength(SqList L)
    {
    return L.length;
    }


    /*********************************************************
    ** 函数名:int GetElem(SqList L, int i, char *e)
    ** 功能: 求线性表中第i个元素
    ** 描述: 错误则返回-1, 若找到则返回0,该元素值存入参数e中
    ** 作者: 庞辉
    *********************************************************
    */

    int GetElem(SqList L, int num, char *e)
    {
    if(num < 1 || num > L.length)
    {
    return -1;
    }
    else
    {
    *e = L.data[num - 1];
    return 0;
    }
    }

    /*********************************************************
    ** 函数名:int Locate(SqList L, char x)
    ** 功能: 按值查找元素
    ** 描述: 错误则返回-1, 若找到则返回位置(从1开始计量)
    ** 作者: 庞辉
    *********************************************************
    */

    int Locate(SqList L, char x)
    {
    int i = 0;

    for(i = 0; i < L.length; i++)
    {
    if(L.data[i] == x)
    {
    return i + 1;
    }
    }

    return -1;
    }

    /*********************************************************
    ** 函数名:int InsElem(SqList *L, char x, int num)
    ** 功能: 在某位置插入元素
    ** 描述: 错误则返回-1, 若成功则返回0
    ** 作者: 庞辉
    *********************************************************
    */

    int InsElem(SqList *L, char x, int num)
    {
    int i = 0;

    if((num < 1 || num > L->length + 1) || (L->length == MAX_SIZE))
    {
    return -1;
    }
    else
    {
    for(i = L->length - 1; i > num - 2; i--)
    {
    L->data[i + 1] = L->data[i];
    }

    L->data[i + 1] = x;

    L->length++;

    return 0;
    }
    }

    /*********************************************************
    ** 函数名:int DelElem(SqList *L, int num)
    ** 功能: 在某位置删除元素
    ** 描述: 错误则返回-1, 若成功则返回0
    ** 作者: 庞辉
    *********************************************************
    */

    int DelElem(SqList *L, int num)
    {
    int i = 0;

    if(num < 1 || num > L->length)
    {
    return -1;
    }
    else
    {
    for(i = num; i < L->length; i++)
    {
    L->data[i - 1] = L->data[i];
    }

    L->length--;
    }
    }

    /*********************************************************
    ** 函数名:void DispList(SqList L)
    ** 功能: 输出元素值
    ** 描述: 无
    ** 作者: 庞辉
    *********************************************************
    */

    void DispList(SqList L)
    {
    int i = 0;

    for(i = 0; i < L.length; i++)
    {
    printf("%c ", L.data[i]);
    }

    printf("/n");
    }



  • 相关阅读:
    JavaScript
    94.Binary Tree Inorder Traversal
    144.Binary Tree Preorder Traversal
    106.Construct Binary Tree from Inorder and Postorder Traversal
    105.Construct Binary Tree from Preorder and Inorder Traversal
    90.Subsets II
    78.Subsets
    83.Merge Sorted Array
    80.Remove Duplicates from Sorted Array II
    79.Word Search
  • 原文地址:https://www.cnblogs.com/pang123hui/p/2309944.html
Copyright © 2011-2022 走看看