编程实现顺序表的以下基本操作:建立顺序表,修改顺序表,插入顺序表,删除顺序表。

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
typedef int ElemType;
typedef int Status;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
ElemType * newbase,*p,*q;
//顺序表的结构描述
typedef struct{
    ElemType *elem;
    int length;
    int listsize;
}SqList;
//顺序表的初始化
Status InitList_Sq(SqList &L){
    //构造一个空的线性表L
    L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
    if(!L.elem)exit(OVERFLOW); //存储分配失败
    L.length = 0;   //空表长度为0
    L.listsize = LIST_INIT_SIZE;    //初始存储容量
    return OK;
}//InitList_Sq
//顺序表的建立
void Creat_Sq(SqList &L){
    int i,n;
    cout<<"请输入顺序表的元素个数:";
    cin>>n;
    for(i=0;i<n;i++){
        cout<<"请输入第 "<<(i+1)<<" 个元素:";
        cin>>L.elem[i];
        L.length++;
    }
}
//顺序表的显示
void Show_Sq(SqList L){
    for(int i=0;i<L.length;i++){
        cout<<L.elem[i]<<" ";
    }
    cout<<endl;
}
//顺序表的插入
Status ListInsert_Sq(SqList &L,int i,ElemType e){
    if(i<1||i>L.length+1){
        cout<<"i值不合法"<<endl;
        return ERROR;
    }
    if(L.length>=L.listsize){
        newbase = (ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
        if(!newbase)exit(OVERFLOW);
        L.elem = newbase;
        L.listsize += LISTINCREMENT;
    }
    q = &(L.elem[i-1]);
    for(p = &(L.elem[L.length-1]);p>=q;--p){
        *(p+1) = *p;
    }
    *q = e;
    ++L.length;
    return OK;
}
//顺序表的删除
Status ListDel_Sq(SqList &L,int i,ElemType e){
    if(i<1||i>L.length+1){
        cout<<"i值不合法"<<endl;
        return ERROR;
    }
    q = &(L.elem[L.length-1]);
    for(p=&(L.elem[i-1]);p<=q;p++){
        *p=*(p+1);
    }
    e=*q;
    --L.length;
    return OK;
}
//顺序表的修改
Status ListUpdate_Sq(SqList &L,int i,ElemType e){
    if(i<1||i>L.length+1){
        cout<<"i值不合法"<<endl;
        return ERROR;
    }
    L.elem[i-1] = e;
    return OK;
}
int main()
{
    SqList L;
    InitList_Sq(L);
    Creat_Sq(L);
    Show_Sq(L);
    int num=0,i;
    ElemType e;
    bool flag = true;
    while(flag){
        cout<<"1.插入 "<<"2.删除 "<<"3.修改 "<<endl;
        cout<<"请输入要执行操作的序号:";
        cin>>num;
        if(num>=1&&num<=3){
            flag=false;
        }else{
            cout<<"输入非法"<<endl;
        }
    }
    switch(num){
        case 1 :{
            cout<<"请输入要插入的位置:";
            cin>>i;
            cout<<"请输入要插入的数:";
            cin>>e;
            ListInsert_Sq(L,i,e);
        }break;
        case 2 :{
            cout<<"请输入要删除的位置:";
            cin>>i;
            ListDel_Sq(L,i,e);
        }break;
        case 3 :{
            cout<<"请输入要修改的位置:";
            cin>>i;
            cout<<"请输入修改成的数:";
            cin>>e;
            ListUpdate_Sq(L,i,e);
        }break;
    }
    Show_Sq(L);
    return 0;
}

时间: 2024-10-06 14:35:20

编程实现顺序表的以下基本操作:建立顺序表,修改顺序表,插入顺序表,删除顺序表。的相关文章

完全卸载mysql 停止服务、卸载相关程序、删除注册表

本节主要介绍了完全卸载mysql的具体步骤包括停止服务.卸载相关程序.删除注册表等等 1. 停止服务MySQL 2. 卸载mysql相关的程序 3. 删除注册表(运行->regedit),machine->system->controlset001/controlset002/currentcontrolset->services->eventlog->applications->MySQL相关的文件 4. 删除MySQL安装目录和保存数据库数据的目录(C:\Do

mysql支持跨表delete删除多表记录

前几天写了Mysql跨表更新的一篇总结,今天我们看下跨表删除. 在Mysql4.0之后,mysql开始支持跨表delete. Mysql可以在一个sql语句中同时删除多表记录,也可以根据多个表之间的关系来删除某一个表中的记录. 假定我们有两张表:Product表和ProductPrice表.前者存在Product的基本信息,后者存在Product的价格.第一种跨表删除的方式是不用join,在delete时指定用半角逗号分隔多个表来删除,如下sql语句: 复制代码代码如下: DELETE p.*,

Java语言描述顺序表类,顺序表类的基本操作实现

数据结构(Java版)ch2 线性表的顺序存储(顺序表) 线性表的抽象数据Java接口描述如下: package ch2; /** * 线性表的抽象数据接口,用Java语言描述线性表的这些功能! * @author 房廷飞 * */ public interface IList { public void clear(); //将线型表置成空表 public boolean isEmpty(); //判断是不是空表 public int length(); //返回线性表的长度 public O

数据结构中线性表的顺序式表示的基本操作函数

线性表的基本操作共有十二个.我们通过对线性表基本操作的有机组合,可以处理较为复杂的线性表. 一.初始化顺序线性表——构造一个空的顺序线性表 1 void InitList(SqList &L) 2 { 3 L.elem = (ElemType*)malloc(LIST_INIT_SIZE *sizeof(ELemType));//malloc函数来分配存储空间 4 if(!L.elem)//分配存储失败 5 { 6 exit(OVERFLOW); 7 } 8 L.length = 0;//空表的

mysql数据库、数据表、数据基本操作

1 连接数据库 mysql -h 主机地址 -u用户名 -p 密码 2 查看数据库 show databases; 3 查看版本号 select version(); 4 查看当前数据库 select database(); 5 查看现有的数据表 show tables; 6 查看数据表结构 desc 表名; 7 查看数据表创建语句 show create table table_name; 8 查询数据 select * from 表名; 9 查看数据表的前三条数据 select * from

多表查询,子查询,及查询语句中语句执行的先后顺序和特点

对多张表进行查询操作 查询方式1: 笛卡尔积查询 select * from 表1,表2; 结果:让表1中的每一条记录和表2中每一条记录一次组合 表1 n条记录 表2 m条记录 最终查询结果:n * m 条 注意: 1.观察笛卡尔积查询的最终结果,很多数据没有实际作用 2.查询结果太多,对内存压力大 笛卡尔积查询优化(内连接) 加上条件 隐式内连接 select * from 表1,表2 where 表1.字段 = 表2.字段; 显示内连接语法 select * from 表1 inner jo

表的操作-建立表-删除表-修改表的名字-修改列的名字及数据类型-删除/添加主键-在表的最后增加一列-查看表的结构

USE db; -- 列出查看当前数据库中的所有表 SHOW TABLES; SHOW TABLES LIKE 's%'; CREATE TABLE 表名 ( 列名 类型 修饰 约束, sid INT(3) UNSIGNED ZEROFILL PRIMARY KEY AUTO_INCREMENT sgender ENUM('男','女','保密') DEFAULT '男' )ENGINE=MYISAM DEFAULT CHARSET=utf8; -- 建立表 CREATE TABLE IF NO

线性表的各种基本操作

#include"stdio.h" #include<malloc.h> typedef char ElemType; typedef struct LNode{ ElemType data; struct LNode *next; } LinkList; void CreatListF(LinkList *&L,ElemType a[],int n){ //头插法建表 LinkList *s; int i; L=(LinkList *)malloc(sizeof(

六、表记录的基本操作

表记录的基本操作查看 selectselect   字段名列表   from   数据库名.表名: select   字段名列表   from   数据库名.表名  where  条件表达式: *字段名1,字段名2,字段名N 条件的表示方式:使用where引导,适用于更新.删除.查询等场合,符合条件的记录才被操作1.数值比较等于: = 不等于:  !=大于.大于且等于:   >   >=  小于.小于且等于  <   <=在..与..之间:between .. and .. 2.

顺序栈的初始化,建立,插入,查找,删除。

--- 顺序栈:普通数组保存方式,栈顶(max-1)为满,栈底(-1)为空: //////////////////////////////////////////// //顺序栈的初始化,建立,插入,查找,删除.// //Author:Wang Yong // //Date: 2010.8.19 // //////////////////////////////////////////// #include <stdio.h> #include <stdlib.h> #define