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

来源:互联网 发布:袁隆平害了中国人知乎 编辑:程序博客网 时间:2024/06/10 17:13
/*   *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 50typedef  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;}

运行结果:


知识点总结:

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

学习心得:

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

0 0
原创粉丝点击