第三周 顺序表的应用(1)

来源:互联网 发布:a卡优化的单机游戏 编辑:程序博客网 时间:2024/05/17 01:33

/* 
* Copyright (c) 2015, 烟台大学计算机与控制工程学院 
* All rights reserved. 
* 文件名称:main.cpp,list.cpp,list.h 
* 作   者:于东林 
* 完成日期:2015年9月21日 
* 版本号:3.7.0  
* 问题描述:删除在【x,y】之间的所有元素并且保证时间复杂度为O(n),空间复杂度为O(1)
* 输入描述:无 
* 程序输出:删除后的结果
*/

程序及代码:

#include <stdio.h>  #include <malloc.h>    #define MaxSize 50      typedef int ElemType;    typedef struct    {        ElemType data[MaxSize];        int length;    }SqList;    void CreateList(SqList *&L,ElemType a[],int n);  void DispList(SqList *L);  void delx2y(SqList *&L, ElemType x,  ElemType y);


 

#include"tt.h"   void CreateList(SqList *&L,ElemType a[],int n)    {        int i;        L=(SqList *)malloc(sizeof(SqList));        for(i=0;i<n;i++)            L->data[i]=a[i];        L->length=n;    }    void DispList(SqList *L)    {        int i;        for(i=0;i<L->length;i++)            printf("%d ",L->data[i]);        printf("\n");    }      //删除线性表中,元素值在x到y之间的元素   void delx2y(SqList *&L, ElemType x,  ElemType y)  {      int k=0,i; //k记录非x的元素个数       ElemType t;      if(x>y)      {          t=x;          x=y;          y=t;      }      for (i=0; i<L->length; i++)          if (L->data[i]<x || L->data[i]>y )  //复制不在[x, y]之间的元素           {              L->data[k]=L->data[i];              k++;          }      L->length=k;  }


 

#include"tt.h"   int main()  {      SqList *sq;      ElemType a[10]= {5,8,7,0,2,4,9,6,7,3};      CreateList(sq, a, 10);      printf("删除前 ");      DispList(sq);        delx2y(sq, 4, 7);        printf("删除后 ");      DispList(sq);      return 0;  } 


运行结果:

知识点及总结:

        用到了循环和删除线性表中的元素。

学习心得:

        线性表的运算,删除元素,都是十分巨大的收获。

0 0
原创粉丝点击