• (一)线性表结构1数组实现


    (一)数组实现线性表

      1.定义集合(结构体实现)

    1 #define MAX 10
    2  typedef struct {
    3       int DATA[MAX];
    4       int last;
    5 }LIST;

        DATA数组用于存放整型数据,last表示最后元素的下标

       2.定义各类操作

        a.创建空表

        

    LIST *MakeEmpty() {
        LIST *PtrL;
        PtrL = (LIST *)malloc(sizeof(LIST));
        PtrL->last = -1;
        return PtrL;
    
    }

        b.插入数据

    void Insert(int x, LIST *ptrl, int i) {
        if (ptrl->last == MAX - 1) {
            printf("表满");
            return;
        }
        if (i<1 || i>ptrl->last + 2) {
            printf("位置不合法");
            return;
        }
        int j;
        for (j = ptrl->last; j >= i - 1; j--) {
            ptrl->DATA[j + 1] = ptrl->DATA[j + 1];
        }
        ptrl->DATA[i - 1] = x;
        ptrl->last++;
        return;
    }

         c.查找

    int Find(LIST *ptrl, int data) {
        int i = 0;
        while (i <= ptrl->last&&ptrl->DATA[i] != data)
            i++;
        if (i > ptrl->last)
            return -1;
        else
            return i;
    }

        d.删除

    void Delete(LIST *l, int i) {
        int j;
        if (i<1 || i>l->last + 1) {
            printf("不存在该位置!");
            return;
        }
        for (j = i; j <= l->last; j++) {
            l->DATA[j - 1] = l->DATA[j];
        }
        l->last--;
    }

        e.打印(遍历)

    void Print(LIST *l) {
        int i;
        for (i = 0; i <= l->last; i++)
            printf("%d ", l->DATA[i]);
    }


    完整实现

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #define MAX 10
     4 typedef struct {
     5     int DATA[MAX];
     6     int last;
     7 }LIST;
     8 
     9 LIST *MakeEmpty() {
    10     LIST *PtrL;
    11     PtrL = (LIST *)malloc(sizeof(LIST));
    12     PtrL->last = -1;
    13     return PtrL;
    14 
    15 }
    16 
    17 int Find(LIST *ptrl, int data) {
    18     int i = 0;
    19     while (i <= ptrl->last&&ptrl->DATA[i] != data)
    20         i++;
    21     if (i > ptrl->last)
    22         return -1;
    23     else
    24         return i;
    25 }
    26 
    27 void Insert(int x, LIST *ptrl, int i) {
    28     if (ptrl->last == MAX - 1) {
    29         printf("表满");
    30         return;
    31     }
    32     if (i<1 || i>ptrl->last + 2) {
    33         printf("位置不合法");
    34         return;
    35     }
    36     int j;
    37     for (j = ptrl->last; j >= i - 1; j--) {
    38         ptrl->DATA[j + 1] = ptrl->DATA[j + 1];
    39     }
    40     ptrl->DATA[i - 1] = x;
    41     ptrl->last++;
    42     return;
    43 }
    44 
    45 void Delete(LIST *l, int i) {
    46     int j;
    47     if (i<1 || i>l->last + 1) {
    48         printf("不存在该位置!");
    49         return;
    50     }
    51     for (j = i; j <= l->last; j++) {
    52         l->DATA[j - 1] = l->DATA[j];
    53     }
    54     l->last--;
    55 }
    56 
    57 void Print(LIST *l) {
    58     int i;
    59     for (i = 0; i <= l->last; i++)
    60         printf("%d ", l->DATA[i]);
    61 }
  • 相关阅读:
    浏览网页时看到一个把字符串偶数位转化为大写字母的问题,小小白也来班门弄斧尝试一下。
    MFC的连续存储 永久保存(串行化)两篇
    MFC打印和打印预览功能
    桌面linux系统和嵌入式linux系统的不同点
    Ubuntu 和linux的关系
    YUV YPbPr YCbCr CCIR 601 CCIR 656
    推荐几个学习linux的国外著名论坛网站
    使Android开发方便快捷的8个好工具
    VMware网络配置详解
    DSP 定点小数运算
  • 原文地址:https://www.cnblogs.com/chopin2016/p/6360329.html
Copyright © 2020-2023  润新知