顺序表

作者: 知识学者 | 来源:发表于2018-09-03 17:16 被阅读29次
#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
请按任意键继续. . .

相关文章

  • 数据结构与算法(二,线性表的顺序存储结构,穷举法(冒泡和选择排序

    线性表 顺序表 顺序表的特性 顺序表的元素有前驱和后继 顺序表有size 顺序表的增删改查 顺序表的优缺点优点:尾...

  • 顺序表-动态顺序表

    顺序表是逻辑上相邻的元素物理也相邻的。 静态内存是指在程序开始运行时由编译器分配的内存,它的分配是在程序开始编译时...

  • 顺序表-静态顺序表

    线性表,全名为线性存储结构。将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构(...

  • 线性表之顺序存储-顺序表

    顺序表的操作 [x] 向有序顺序表插入一个元素 [x] 顺序表的冒泡排序 [x] 顺序表的删除操作 [x] 顺序表...

  • 数据结构之线性表

    1、线性表-顺序表线性表-顺序表

  • 线性表-顺序表与单链表

    顺序表 线性表的顺序存储,是逻辑相邻,物理存储地址也相邻。 结构定义 顺序表的初始化 顺序表的插入 顺序表的取值 ...

  • 顺序表和链表的区别

    参考:线性表和链表的区别 注:参考文中的‘线性表’准确的说应该是’顺序表‘,链表与顺序表都是线性表。 顺序表:顺序...

  • 快速理解数据结构中链表

    组织数据作用的线性表分为顺序表和链表 顺序表:平常所使用的各类数组均为顺序表,即存储逻辑顺序和物理顺序相同。较常见...

  • 顺序表

    在程序中,经常需要将一组(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传...

  • 顺序表

    https://blog.csdn.net/qq_41943578/article/details/82934644

网友评论

      本文标题:顺序表

      本文链接:https://www.haomeiwen.com/subject/slciwftx.html