数据结构-静态链表

静态链表的操作

数据结构中关于静态链表的思想和基本操作笔记文档

#include<stdio.h>
#include<stdlib.h>
/*关于静态链表所有操作笔记文档*/

/*记住一个关键思路:把space[i].cur当作space->next
记住:cur=0就代表着这是最后一个已使用的分量*/

/*以整型静态链表为例*/
#define MAXSIZE 1000
struct LinkNode{
    int data;
    int cur;
};
typedef struct LinkNode LinkList;


/*初始化静态链表*/
void InitList(LinkList space[]){
    /*传入一个空数组,初始化一个空静态链表*/
    int i;
    for(i = 0;i < MAXSIZE - 1; i++){
        space[i].cur = i + 1;
    }
    space[MAXSIZE - 1].cur = 0;
}


/*静态链表中,malloc分配空间和free释放空间需要自己定义*/

int Malloc_SSL(LinkList space[]){
    /*传入静态链表,返回分配好的分量的下标*/
    int i = space[0].cur;//找到第一个空闲分量
    space[0].cur = space[i].cur;//让后一个空闲分量成为第一个空闲分量
    return i;
}


void Free_SSL(LinkList space[], int k){
    /*传入静态链表,释放指定下标的分量*/
    space[k].cur = space[0].cur;
    space[0].cur = k;
}


void ListInsert(LinkList space[], int i, int elem){
    /*传入静态链表,待插入位置的下一个分量下标,待插入元素*/
    int j, k, l;
    k = MAXSIZE - 1;
    j = Malloc_SSL(space);
    if(j != 0){
        space[j].data = elem;
        for(l = 1;l <= i - 1; l++){
            k = space[k].cur;
        }
        space[j].cur = space[k].cur;
        space[k].cur = j;
    }    
}


void ListDelete(LinkList space[], int i){
    /*传入静态链表,待删除位置的分量*/
    int j, k, temp;
    k = MAXSIZE - 1;
    for(j = 1;j <= i - 1; j++){
        k = space[k].cur;
    }
    temp = space[k].cur;
    space[k].cur = space[temp].cur;
    Free_SSL(space, temp);
}

int GetListElem(LinkList space[], int i){
    /*传入静态指针,指定位置分量,返回该分量的data*/
    int j, k;
    k = MAXSIZE - 1;
    for(j = 1;j <= i; j++){
        k = space[k].cur;
    }
    return space[k].data;
}


void ChangeListElem(LinkList space[], int i, int newElem){
    /*传入静态指针,指定位置分量, 修改该分量的data*/
    int j, k;
    k = MAXSIZE - 1;
    for(j = 1;j <= i - 1; j++){
        k = space[k].cur;
    }
    space[k].data = newElem;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值