顺序表

#include<iostream>
#include"cstdlib"
#include<string>

using namespace std;

//定义结构体类型 
struct SeqList{
    int MAXNUM;
    int n;
    int *element;
};

typedef struct SeqList *PSeqList;

//创建空的循序链表 
PSeqList  createNullList_seq(int m); 
//判断链表是否为空 
int isNullList_seq(PSeqList palist) ;
//求元素的下标
int locate_seq(PSeqList palist, int x);
//顺序表的插入
int insertPre_seq(PSeqList palist,int p, int x);
//删除元素 
int deleteP_seq(PSeqList palist, int p);
// 打印顺序表中的元素
void printSeqList(PSeqList palist);

PSeqList  createNullList_seq(int m)
{

PSeqList palist=(PSeqList) malloc(sizeof(SeqList));
if(palist!=NULL)
{
    palist->element=(int *) malloc(sizeof(int)*m);
    if(palist->element)
    {
        palist->MAXNUM=m;
        palist->n=0;
        return palist; 
    }
    else free(palist);
    
}
    
 cout<<" out of  space "<<endl;
 return NULL;
    
 } 
 
 
 int isNullList_seq(PSeqList palist)
 {
    if(palist->n==0) 
     return 1;
     return 0;
 }


int locate_seq(PSeqList palist, int x)
{
    for(int i=0; i<palist->n; i++)
    {
        if(palist->element[i]==x)
        return i;
        else
         return -1;
    }
}


//在palist所指顺序表下标为p的元素插入x 
int insertPre_seq(PSeqList palist,int p, int x)
{
    int q;
    
    if(palist->n>=palist->MAXNUM) 
    {
        cout<<" overflow "<<endl;
        return 0;
    }
    
    if(p<0||p>palist->n)
    {
       cout<<" not exist locate"<<endl;
       return 0;
    }
    

 /*
 for(q=p; q<palist->n; q++) 
 移动元素只能从后到前面,注意bug 
 
 */
    
    
    for(q=palist->n-1; q>=p; q--)
 {
    palist->element[q+1]=palist->element[q];
 }
    palist->element[p]=x;
    
    palist->n=palist->n+1;
    
    return 1;

}


int deleteP_seq(PSeqList palist, int p)
{
    if(p<0||p>palist->n-1)
    {
        cout<<" not exist"<<endl;
        return 0;
    }
    
    for(int i=p; i<palist->n-1; i++)
    {
        palist->element[i]=palist->element[i+1];
    }
    
    palist->n=palist->n-1;
    return 1;   
 } 
 

void printSeqList(PSeqList palist)
{
    if(palist->n==0)
    cout<<" 没有元素"<<endl;
    
  for(int i=0; i<palist->n; i++)
  cout<<" "<<palist->element[i];
     
}


int main()
{
    
    PSeqList p=createNullList_seq(100);
    
    int  tag=isNullList_seq(p);
    if(tag)
    cout<<"-------- 是空链表"<<endl;
    else
    cout<<"-------- 不是空链表"<<endl;
    
    for(int i=1; i<9; i++)
    {
            insertPre_seq(p,0,i);
            cout<<"---"<<i<<endl;
    }

    printSeqList(p);
    
    return 0;
}

结果

-------- 是空链表
---1
---2
---3
---4
---5
---6
---7
---8
 8 7 6 5 4 3 2 1
--------------------------------
Process exited after 0.03496 seconds with return value 0
请按任意键继续. . .

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏lhyt前端之路

玩转JS的类型转换黑科技0.前言1.奇葩例子2.从[]==![]开始3.从已有的得到想不到的4.关于(a==1 && a==2 && a==3)4.2 ===

js身为一种弱类型的语言,不用像c语言那样要定义int、float、double、string等等数据类型,因为允许变量类型的隐式转换和允许强制类型转换。我们在...

9920
来自专栏Vamei实验室

Python进阶07 函数对象

秉承着一切皆对象的理念,我们再次回头来看函数(function)。函数也是一个对象,具有属性(可以使用dir()查询)。作为对象,它还可以赋值给其它对象名,或者...

25560
来自专栏海天一树

小朋友学Python(12):运算符

一、基本运算符 Python运算符多数与C/C++/Java类似,但有两个不一样。“//”表示求商,“**”表示求幂 例1 a = 10 b = 3 x = a...

28650
来自专栏磐创AI技术团队的专栏

2018 年最常见的 Python 面试题 & 答案

https://data-flair.training/blogs/python-tutorial/

17410
来自专栏desperate633

LintCode 最长上升连续子序列题目样例分析1(普通解法)分析2(使用队列)

给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列。(最长上升连续子序列可以定义为从右到左或从左到右的序列...

9320
来自专栏前端开发

【JavaScript】Array数组对象下的方法

16950
来自专栏数据结构笔记

python入门——列表

10420
来自专栏java一日一条

MySQL函数大全及用法示例(一)

1、字符串函数 ascii(str) 返回字符串str的第一个字符的ascii值(str是空串时返回0) mysql> select ascii('2...

14720
来自专栏软件开发 -- 分享 互助 成长

ER模型到关系模型的转换规则

E-R模型向关系模型的转换规则: 一、两元联系的转换规则 (1)实体类型的转换  将每个实体类型转换成一个关系模式,实体的属性即为关系的属性,实体标识符即为关系...

26560
来自专栏黑泽君的专栏

java基础学习_基础语法(上)02_day03总结

============================================================================= ==...

8520

扫码关注云+社区

领取腾讯云代金券