第三周 项目四 顺序表的应用1 (。。)

/*   
*Copyright (c)2015, 烟台大学计算机与控制工程学院   
*All rights reserved.   
*文件名称:Apply.cpp   
*作    者:苏凯祺   
*完成日期:2014年10月19号   
*版 本 号:v1.0   
*问题描述:删除元素在【x,y】之间所有的元素(x,y)只的是位置,要求算法的时间复杂度为O(n),空间复杂度为O(1)。
*/   
list.h
#include<stdio.h>
#define MaxSize 50
typedef  int ElemType;
typedef struct
{
    ElemType data[MaxSize];
    int length;
}SqList;
void ListDelete(SqList *&L,int x,int y);
void DispList(SqList *L);
bool ListEmpty(SqList *L);//判定是否为空表ListEmpty(L)
void CreateList(SqList *&L, ElemType a[], int n);//用数组创建线性表
list.cpp
#include"list.h"
#include <stdio.h>
#include <malloc.h>
void InitList(SqList *&L)   //引用型指针
{
    L=(SqList *)malloc(sizeof(SqList));
    //分配存放线性表的空间
    L->length=0;
}
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;
}

bool ListEmpty(SqList *L)
{
   return(L->length==0);
}
void DestroyList(SqList *&L)
{
   free(&L);
}
void DispList(SqList *L)
 {
   int i;
    if (ListEmpty(L)) return;
    for (i=0; i<L->length; i++)
        printf("%d ",L->data[i]);
    printf("\n");
}
void ListDelete(SqList *&L,int x,int y)
 {
      int j;
    /* if(x>y)
    {j=x;x=y;y=j;}   //对x,y大小顺序的改变
    x=x-1;y=y-1;     //逻辑顺序时使用
*/
    if(x<=0&&0<=y&&y<L->length-1)
     {for (j=0; j<L->length-y-1; j++) //将data[i..n-1]元素前移
        L->data[j]=L->data[j+y+1];
        L->length=L->length-y-1;
        }
    else if(0<x&&x<L->length&&y>=L->length-1)
    {L->length=x;}
        else if(x<=0&&y>=L->length-1)
   {
       L->length=0;
   }
    else if(0<x&&x<L->length&&0<y&&y<L->length-1)
    {for (j=x; j<L->length-1-y+x; j++) //将data[i..n-1]元素前移
        L->data[j]=L->data[j+1-x+y];
         L->length=L->length-y+x-1;}

 }
main.cpp
#include"list.h"
int main()
{   int x,y;
    SqList *s;
    ElemType z[6]= {5,8,7,2,4,9};
    CreateList(s, z, 6);
    scanf("%d%d",&x,&y);
    ListDelete(s,x,y);
    DispList(s);
    return 0;
}

运行结果:

第三周 项目四 顺序表的应用1 (。。)_第1张图片第三周 项目四 顺序表的应用1 (。。)_第2张图片第三周 项目四 顺序表的应用1 (。。)_第3张图片第三周 项目四 顺序表的应用1 (。。)_第4张图片

知识点总结:

线性表的基本处理以及对各个函数之间的应用。

学习心得:

这个本来是我领会错了题意的,看成了位置,写的有点复杂。有不少的bug,更多的应用了单步调试,对于单步调试也是越来越精了。可能是以前对于线性表有些不解,但是自己亲身去解决这个问题的时候,很多问题就那么莫名其妙的就别解开了。虽然自己写的有点慢,但是还是会加油的!!

你可能感兴趣的:(第三周 项目四 顺序表的应用1 (。。))