• 静态链表


    用数组来描述一个链表

    链表的大小是固定的

    不能动态申请内存空间

    数组首元素的游标指向第一个没有数据的下标地址,不存放数据

    数组尾元素的游标指向第一个有数据的下标地址,不存放数据

    未使用的数组称为备用链表

    数组尾元素相当于头结点

    最后一个有数据的元素游标为0

     

    #include<iostream>
    using namespace std;
    
    const int size = 1000;
    
    //静态链表的数据结构
    typedef struct Node
    {
    	ElementType data;
    	int cur;
    }staticLink[size];
    
    //初始化静态链表
    void initiate(staticLink L)
    {
    	L[0].cur = size - 1;
    	for (int i = 1; i < size - 1; i++)
    		L[i].cur = i + 1;
    	L[size - 1].cur = 0;
    }
    
    //获取备用链表元素位置
    int Malloc_SLL(staticLink L)
    {
    	int i = L[0].cur;
    	if (i)
    	{
    		L[0].cur = L[i].cur;
    	}
    	return i;
    }
    
    //静态链表的插入操作
    void insert(int i, staticLink L, ElementType e)
    {
    	int k = size-1;//尾节点的位置
    	int pos = Malloc_SLL(L);//备用链表位置
    	int j;
    
    	if (i<1 || i>Listlength(L) + 1)
    	{
    		return ERROR;
    	}
    	if (pos)
    	{
    		L[pos].data = e;
    		for (j = 1; j <= i - 1; j++)
    			k = L[k].cur;
    	}
    	L[pos].cur = L[k].cur;
    	L[k].cur = pos;
    	return OK;
    }
    
    //静态链表删除元素
    void Delete(int i, staticLink L)
    {
    	if (i<1 || i>ListLength(L) + 1)
    		return ERROR;
    	int pos = size-1;
    	for (int j = 1; j <= i - 1; j++)
    		pos = L[pos].cur;
    	L[pos].cur = L[L[pos].cur].cur;
    }
    
    //按值查找
    void Search1(staticLink L, ElementType e)
    {
    	int pos = L[size - 1].cur;
    	while ((pos > 0) && (pos < size - 1) && L[pos].data != e)
    	{
    		pos = L[pos].cur;
    	}
    	cout << pos << endl;
    }
    
    //按位查找,该位置是游标的位置,而不是下标的位置
    void Search2(staticLink L, int pos)
    {
    	int k = size-1;
    	for (int i = 1; i < pos; i++)
    		k = L[k].cur;
    	cout << L[L[k].cur].data << endl;
    }
    

      

  • 相关阅读:
    javascript中事件
    pku 1836 Alignment
    pku 3086 Triangular Sums
    [转]asp格式化日期
    用数组作checkboxlist数据源
    (转)Membership、MembershipUser和Roles类 详解
    asp中判断 checkbox 是否选中
    使用 AddRange 方法将多个 ListItem 对象添加到集合
    My97DatePicker,一个兼容所有浏览器的日历选择脚本(相当经典)
    .Net下批量删除数据的存储过程问题(用动态SQL )
  • 原文地址:https://www.cnblogs.com/KennyRom/p/5895404.html
Copyright © 2020-2023  润新知