静态链表的实现(建表,定位,删除,插入)

静态链表的实现(建表,定位,删除,插入)

#include<iostream>         //静态链表
using namespace std;

const int maxsize=1000;   //什么1<<30不行?
int N;

typedef struct List
{
    int val;
    int cur;
}List,Linklist[maxsize];    //typedef int a[10];
//so Linklist equals struct List[maxsize]

int LocateElem(Linklist S,int e);
void InitSpace(Linklist &S);
void InsertElem(Linklist &S,int loc,int e);    
//loc表示在哪个位置后插入,从1开始
void destroyElem(Linklist &S,int loc);
void printElem(Linklist &S);

int main()
{
    Linklist S;
    InitSpace(S);
    InsertElem(S,0,0);
    printElem(S);
    destroyElem(S,1);
    printElem(S);
    return 0;
}

void InitSpace(Linklist &S)
{
    cin>>N;
    S[0].cur=1;
    int i=S[0].cur;
    for(;i<=N;i++){
        S[i].cur=i+1;
        S[i].val=i;
    }
    S[N].cur=0;
}

int LocateElem(Linklist S,int e)
{
    int i=S[0].cur;
    while(i&&S[i].val!=e)   i=S[i].cur;
    return i;
}

void InsertElem(Linklist &S,int loc,int e)
{
    int i=S[0].cur;
    for(int j=1;j<loc;j++) i=S[i].cur;
    if(!loc)  i--;
    int flag=S[i].cur;
    S[i].cur=++N;
    S[N].cur=flag;
    S[N].val=e;
}

void destroyElem(Linklist &S,int loc)
{
    int i=0;
    for(int j=1;j<loc;j++) i=S[i].cur;
    S[i].cur=S[S[i].cur].cur;
}

void printElem(Linklist &S)
{
    int i=S[0].cur;
    while(i){
        cout<<S[i].val<<' ';
        i=S[i].cur;
    }
    cout<<endl;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值