以下为数据结构中的顺序表实现代码,已测试能够运行。虽然说是C++版的,但是其实应该是C语言班的。C++应该是面向对象,用抽象方法实现,而以下代码是面向过程的,只是把C语言中的输入(scanf)和输出(printf)改为了cin和cout而已。如果想要改为C++版的,可以将各个函数变为类的成员函数,使用方法改为调用类的成员方法而已,没有什么特别的。

#include<iostream>
#include<stdlib.h>//清屏操作的头文件
using namespace std;

//主要操作的函数声明
void insert(int A[],int &length,int);
int _delete(int A[],int &length,int n);
int locate(int A[],int length,int n);
int get(int A[],int length,int );
void create(int A[],int length);
void show(int A[],int length);
void main1();

int main(){
    int action,A[100],length;
    char c;
    main1();
    while(cin>>action){
        if(action==1){
            //创建
            system("cls");
            cout<<"please input the length:"<<endl;
            cin>>length;
            create(A,length);
            system("pause");
            system("cls");
            main1();
        } else if(action==2){
            //插入
            system("cls");
            cout<<"please input the integer:"<<endl;
            int n;
            cin>>n;
            insert(A,length,n);
            cout<<"OK! the number has been inserted!"<<endl;
            system("pause");
            system("cls");
            main1();
        } else if(action==3){
            //打印
            system("cls");
            show(A,length);
            system("pause");
            system("cls");
            main1();
        } else if(action==4){
            //获取
            system("cls");
            cout<<endl<<"please input the number's index you want to get:"<<endl;
            int n;
            cin>>n;
            int result=get(A,length,n);
            if(!result){
                cout<<"wrong! can't find the number in the Array."<<endl;
            } else {
                cout<<"OK! find it! it's "<<result<<endl;
            }
            system("pause");
            system("cls");
            main1();
        } else if(action==5){
            //删除
            system("cls");
            cout<<endl<<"please input the number you want to delete:"<<endl;
            int n;
            cin>>n;
            int result=_delete(A,length,n);
            if(!result){
                cout<<"wrong! can't find the number in the Arrar."<<endl;
            }   else {
                cout<<"OK! the number has been deleted"<<endl;
            }
            system("pause");
            system("cls");
            main1();
        } else if(action==6){
            //定位
            system("cls");
            cout<<endl<<"please input the number you want to locate:"<<endl;
            int n;
            cin>>n;
            int result=locate(A,length,n);
            if(!result){
                cout<<"wrong! can't find the number in the Array."<<endl;
            } else {
                cout<<"the index of "<<n<<" is "<<result<<endl;
            }
            system("pause");
            system("cls");
            main1();
        } else {
            //退出
            exit(0);
        }
    }
}

void insert(int A[],int &length,int n){
    int i=0;
    while(i<length&&A[i]<n){
        i++;
    }
    int temp=i;
    i=length;
    while(i>temp){
        A[i]=A[i-1];
        i--;
    }
    A[temp]=n;
    length++;
}

int _delete(int A[],int &length,int n){
    //用于删除确定的一个数,可稍加修改,用于删除下表为n的数
    int i=0;
    while(i<length&&A[i]!=n){
        i++;
    }
    if(i==length){
        //如果i等于数组的长度,则表示未查找到n值。
        return 0;
    } else {
        //如果查找到n值。
        while(i<length-1){
            A[i]=A[i+1];
            i++;
        }
        length--;
        return 1;
    }
}

int locate(int A[],int length,int n){
    int i=0;
    while(i<length&&A[i]!=n){
        i++;
    }
    if(i==length){
        return 0;
    } else {
        return i;
    }
}

int get(int A[],int length,int index){
    if(index<0||index>length-1){
        //当索引下标小于0或大于长度-1的时候,就超出了数组范围。
        return 0;
    } else {
        return A[index];
    }
}

void create(int A[],int length){
    cout<<"please input the  numbers of the Array"<<endl;
    for(int i=0;i<length;i++){
        cin>>A[i];
    }
    cout<<endl<<"OK! the Array have been created!"<<endl;
}

void show(int A[],int length){
    cout<<"current Array is:"<<endl;
    for(int i=0;i<length;i++){
        cout<<A[i]<<' ';
    }
    cout<<endl;
}

void main1(){
    cout<<"--------------------------------------------"<<endl;
    cout<<"|                                          |"<<endl;
    cout<<"|     welcome to use the SquenticalList    |"<<endl;
    cout<<"|             1->create the list           |"<<endl;
    cout<<"|             2->insert to the list        |"<<endl;
    cout<<"|             3->show the list             |"<<endl;
    cout<<"|             4->get the number            |"<<endl;
    cout<<"|             5->delete the number         |"<<endl;
    cout<<"|             6->locate the numbet         |"<<endl;
    cout<<"|             7->exit                      |"<<endl;
    cout<<"|                                          |"<<endl;
    cout<<"--------------------------------------------"<<endl;
}

顺序表(C++)的更多相关文章

  1. jdk顺序表笔记

    一.AbstractCollection 提供了集合的最大实现 继承该类,必须实现size()和iterator(),因为该类操作集合都是通过iterator 二.fail-fast策略 该策略在集合 ...

  2. c++顺序表基本功能

    头文件 #define LIST_MAX_SIZE 5#define LISTINCREMENT 2#include<assert.h>#include<string>temp ...

  3. 数据结构:顺序表(python版)

    顺序表python版的实现(部分功能未实现) #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object): def __ini ...

  4. 《数据结构》2.2顺序表(sequence list)

    //顺序表节点的定义 typedef struct { datatype data[MAXSIZE]; //数组容量的上限 int len; //记录最后一个元素的位置,相当于一个指针,表空时len= ...

  5. c数据结构 顺序表和链表 相关操作

    编译器:vs2013 内容: #include "stdafx.h"#include<stdio.h>#include<malloc.h>#include& ...

  6. java顺序表和树的实现

    一.顺序表 1.线性表 //java顺序表的实现,如ArrayList就是用线性表实现的,优点是查找快,缺点是添加或删除要移动很多元素,速度慢 public class SequenceList { ...

  7. 数据结构顺序表删除所有特定元素x

    顺序表类定义: template<class T> class SeqList : { public: SeqList(int mSize); ~SeqList() { delete[] ...

  8. 顺序表C语言版

    #include <stdio.h> /* * 顺序表最多输入N个数 */ #define N 10 #define OK 1 #define ERROR -1 struct sequeu ...

  9. C#线性表之顺序表

    线性表是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这种一对一的关系指的是数据元素之间的位置关系,即: ...

  10. C语言 线性表 顺序表结构 实现

    一个能够自动扩容的顺序表 ArrList (GCC编译). #include <stdio.h> #include <stdlib.h> #include <string ...

随机推荐

  1. js-- 一些题目

    1. ~~3.14~~3.14=-((~3.14)+1)=-(-(3.14+1)+1)=-(-(3+1)+1)=-(-4+1) =-(-3)=3 按位非(NOT)(~)操作数的负值减1. 2. var ...

  2. Github/Eclipse管理Maven项目

    Eclipse和Git插件 (To-do: 直接从workspace导入也可以,弄明白这个repo管理的本质,查看sprigmvc是如何导入的) 最新版本的Eclipse都直接集成了Git插件 Ecl ...

  3. java synchronized类锁,对象锁详解(转载)

    觉得还不错 留个记录,转载自http://zhh9106.iteye.com/blog/2151791 在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看 ...

  4. NOR FLASH与NAND FLASH的区别

    NOR和NAND是现在市场上两种主要的非易失闪存技术.Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面.紧接着,1989年,东芝公司发表了 ...

  5. web标准常见问题整理

    1.超链接访问过后hover样式就不出现的问题 2.FF下如何使连续长字段自动换行 3.ff下为什么父容器的高度不能自适应 4. IE6的双倍边距BUG 5. IE6下绝对定位的容器内文本无法正常选择 ...

  6. Javascript之对象的继承

    继承是面向对象语言一个非常重要的部分.许多OOP语言都支持接口继承和实现继承两种方式.接口继承:继承方法签名:实现继承:继承实际的方法.在ECMAScript中函数是没有签名的,所以也就无法实现接口继 ...

  7. for循环语句以及迭代法和穷举法

    循环语句: 四要素:初始条件,循环条件,状态改变,循环体 for(初始条件;循环条件;状态改变){ //循环体} 案例1:打印等腰直角三角形和菱形 左上三角 static void Main(stri ...

  8. 无需激活用户直接登入discuz

    //打开discuz/api/uc.php //synlogin方法(180行)处,往下找到 if(($member = getuserbyuid($uid, 1))) { dsetcookie('a ...

  9. 使用HttpClient访问被保护资源

    下面的Android应用需要向指定页面发送请求,但该页面并不是一个简单的页面,只有当用户已经登录,而且登录用户的用户名是crazyit.org时才可访问该页面.如果使用HTTPURLConnectio ...

  10. Junit4的简单使用

    junit4的简单使用 测试套件的使用 测试类1 package com.westward; import static org.junit.Assert.*; import org.junit.Te ...