首页 > 代码库 > 学习数据结构之线性表

学习数据结构之线性表

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

  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\n",e);
 36     printf("\n");
 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\n");
 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\n");
 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\n",e);
 72         L.length--;
 73         return L;
 74     }
 75 
 76 }
 77 
 78 /*显示列表的长度和已有的元素*/
 79 void ListShow(SqList list)
 80 {
 81     printf("当前表的长度为: %d\n",list.length);
 82     if(list.length == 0)
 83         printf("0\n");
 84     else
 85     {
 86         printf("当前表的元素有:\n");
 87         for(int i = 1;i <= list.length;i++)
 88             printf("%d ",list.data[i-1]);
 89     }
 90     printf("\n");
 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 }

 

学习数据结构之线性表