前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >顺序表

顺序表

作者头像
热心的社会主义接班人
发布2018-09-30 10:35:02
4840
发布2018-09-30 10:35:02
举报
文章被收录于专栏:cs
代码语言:javascript
复制
#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;
}

结果

代码语言:javascript
复制
-------- 是空链表
---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
请按任意键继续. . .
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.09.03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档