zoukankan      html  css  js  c++  java
  • 学习数据结构之线性表

    实现了线性表的获得元素,插入,删除,统计元素的功能。代码如下,初学者,学习罢了。

      1 #include<stdio.h>
      2 #define MAXSIZE 20
      3 typedef int ElemType;  /*定义基本类型,视具体情况而定*/
      4 
      5 typedef int Status;
      6 #define OK 1
      7 #define ERROR 0
      8 #define FALSE 0
      9 
     10 
     11 /*链表的顺序存储结构*/
     12 typedef struct
     13 {
     14     ElemType data[MAXSIZE];  /*数组用来存储数据元素*/
     15     int  length;    /*线性表的长度*/
     16 }SqList;
     17 
     18 
     19 /*初始化,建立一个新的线性表*/
     20 SqList Initial(SqList list)         /*一定注意:形式参数是不能够传递到实际参数的,需要返回值*/
     21 {
     22     list.length = 10;               /*如果需要将形参传递到实参中需要用指针或者return的方法*/
     23     for(int i = 0;i < 10;i++)
     24         list.data[i] = i+1;
     25     return list;
     26 }
     27 
     28 
     29 /*获得元素操作*/
     30 Status GetElem(SqList L,int i,ElemType e)
     31 {
     32     if(L.length == 0 || i < 1 || i > L.length  )
     33         return ERROR;
     34     e = L.data[i-1];
     35     printf("获得的元素为 %d
    ",e);
     36     printf("
    ");
     37     return  OK;
     38 }
     39 
     40 /*插入操作,需要插入的元素为e*/
     41 SqList ListInsert(SqList L,int i,ElemType e)
     42 {
     43     int k;
     44     if(L.length >= MAXSIZE || i <= 0 || i > L.length)
     45         //return ERROR;
     46         printf("ERROR
    ");
     47     else
     48     {
     49         for(k = L.length;k >= i-1;k--)
     50             L.data[k+1] = L.data[k];
     51         L.data[i-1] = e; /*将元素插入*/
     52         L.length++;
     53         return L;
     54     }
     55 
     56 }
     57 
     58 /*删除操作,并且将删除的元素放入e中*/
     59 SqList ListDelete(SqList L,int i,ElemType e)
     60 {
     61     int k;
     62     if(i <= 0 || L.length >= MAXSIZE || i > L.length )
     63         printf("ERROR
    ");
     64     else
     65     {
     66         e = L.data[i-1];
     67         for(k = i;k <= L.length;k++)
     68         {
     69             L.data[k-1] = L.data[k];
     70         }
     71         printf("删除的元素为%d
    ",e);
     72         L.length--;
     73         return L;
     74     }
     75 
     76 }
     77 
     78 /*显示列表的长度和已有的元素*/
     79 void ListShow(SqList list)
     80 {
     81     printf("当前表的长度为: %d
    ",list.length);
     82     if(list.length == 0)
     83         printf("0
    ");
     84     else
     85     {
     86         printf("当前表的元素有:
    ");
     87         for(int i = 1;i <= list.length;i++)
     88             printf("%d ",list.data[i-1]);
     89     }
     90     printf("
    ");
     91 }
     92 
     93 
     94 int main()
     95 {
     96     ElemType a;
     97     SqList list;
     98     list = Initial(list);
     99     list = ListInsert(list,10,13);
    100     ListShow(list);
    101     list = ListDelete(list,10,a);
    102     ListShow(list);
    103 
    104 
    105     return 0;
    106 }
  • 相关阅读:
    Linux学习 -- Shell编程 -- 字符截取命令
    Linux学习 -- Shell编程 -- 正则表达式
    Linux学习 -- Shell基础 -- Bash变量
    Linux学习 -- Shell基础 -- Bash基本功能
    Linux学习 -- Shell基础 -- 概述
    Linux学习 -- 备份与恢复
    Linux学习 -- 启动管理
    Linux学习 -- 日志管理
    chapter9_3 协同程序实现迭代器
    chapter9_2 管道与过滤器
  • 原文地址:https://www.cnblogs.com/jeavenwong/p/7142146.html
Copyright © 2011-2022 走看看