第三周 项目1-顺序表的基本运算

/*  
*Copyright (c) 2017,烟台大学计算机与控制工程学院  
*All rights reserved.  
*文件名称:  
*作    者:陈军正  
*完成日期:2017年9月20日  
*版 本 号:v1.0  
*/ 
#include <iostream>
#include "malloc.h"
using namespace std;
#define MaxSize 50
typedef struct
{
    int data [MaxSize];
    int length;
}Sqlist;
void CreateList (Sqlist *&L,int a[],int n);  ///创建线性表
void DispList (Sqlist *&L);  ///输出线性表
bool EmptyList (Sqlist *&L); ///判断线性表是否为空
void ListLength(Sqlist *&L);  ///判断线性表的长度
void GetElem(Sqlist *&L,int n);/// 按位置查找元素
int LocateElem(Sqlist *&L,int n);///查找元素的位置
bool ListInsert(Sqlist *&L,int n,int w);  ///线性表元素插入
bool ListDelete(Sqlist *&L,int i,int &e);  ///线性表元素删除
void InitList(Sqlist *&L) ;  ///线性表初始化
void DestroyList(Sqlist *&L);///摧毁线性表


int main()
{
    int i,n,c,w,s,y,z;
    int x[6] = {0,1,2,3,4,5};
    Sqlist *sq;

    CreateList(sq,x,6); ///创建线性表
    DispList(sq);  ///输出线性表
    ListLength(sq);///线性表的长度
    cout<<"请输入您想查询的位置:";
    cin>>i;
    GetElem(sq,i); ///按位置查找元素
    cout<<"请输入您想确定的元素:";
    cin>>n;
    LocateElem(sq,n);///查找元素的位置
    cout<<"请输入想要插入的数据和位置:";
    cin>>c>>w;
    ListInsert(sq,c,w); ///插入线性表元素
    DispList(sq); ///线性表输出
    cout<<"请输入您想要删除的位置和元素:";
    cin>>y>>z;
    ListDelete(sq,y,z);  ///删除线性表
    DispList(sq);   ///输出线性表
    InitList(sq);   ///初始化线性表
    DestroyList(sq);   ///摧毁线性表
    return 0;
}

void CreateList (Sqlist *&L,int a[],int n) ///创建线性表
{
    L = (Sqlist *)malloc(sizeof(Sqlist)); ///为线性表开辟动态内存空间
    int i;
    for(i=0; i<n; i++)
    {
        L->data[i] = a[i];
    }
    cout<<endl;
    L->length = n;
}
void DispList (Sqlist *&L)   ///输出线性表
{
    if (EmptyList(L))
        for (int i=0; i<L->length; i++)
            cout<<L->data[i]<<" ";
            cout<<endl;
}

bool EmptyList (Sqlist *&L)  ///判断线性表是否为空
{
    return  L->length;
}

void ListLength(Sqlist *&L)   ///线性表的长度
{
    cout<<"线性表的长度为:";
    cout<<L->length<<endl;
}
void GetElem(Sqlist *&L,int n) ///查找线性表的某元素
{
    cout<<L->data[n-1]<<endl;
}
int LocateElem(Sqlist *&L,int n)  ///元素的位置
{
    int i =0;
    while (L->data[i] !=n && i<L->length)
        i++;
    if (i > L->length)
    return 0;
    else
        cout<<i+1<<endl;

}
bool ListInsert(Sqlist *&L,int n,int w)  ///插入元素
{
    int i,q;
    q = L->length;
    if ( w>0 && w<L->length+2)  ///判断删除位置是否正确
       while (q != w-1)
       {
           L->data[q] = L->data[q-1];
           q--;
       }
    else
     {
         cout<<"您输入的范围不对。"<<endl;
         return false;

     }

       L->data[w-1] = n;
    L->length++;
}
bool ListDelete(Sqlist *&L,int i,int &e)  ///删除线性表的某元素
{
    int j;
    if (i<1 || i>L->length) ///判断删除位置是否正确
        return false;
    i--;
    e=L->data[i];
    for (j=i; j<L->length-1; j++)
        L->data[j]=L->data[j+1];
    L->length--;
    return true;
}
void InitList(Sqlist *&L)  /// 初始化线性表
{
    L=(Sqlist *)malloc(sizeof(Sqlist));///为线性表开辟动态内存空间
    L->length=0;
}
void DestroyList(Sqlist *&L)  ///摧毁线性表
{
    free(L);
}

运行结果:


知识点总结:将所有代码放在一个文件里,感觉非常复杂,查找起来也非常麻烦,所以,下一步要习惯将数据分布在其他文件中,此外注释有着很大作用,方便以后查看,能够快速看懂

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值