阅读背景:

链表的顺序存储

来源:互联网 
#include<iostream>
using namespace std;

#define MAXLENGTH 20
#define ERROR 0
#define OK 1
typedef int ElemType;


typedef struct {
	ElemType data[MAXLENGTH];
	int length;
}SqList;

int get_elem(SqList L,int i,ElemType *e)
{
	if(L.length==0||i<1||i>L.length)
		return ERROR;
	*e=L.data[i-1];
	return OK;
}

/* 
** 初始条件:顺序线性表L已存在 
** 操作结果:返回L中第1个与e满足关系的数据元素的位序。
** 若这样的数据元素不存在,则返回值为0 
*/  
int locate_elem(SqList L,ElemType e)
{
    int i;
    if (L.length==0)
            return 0;
    for(i=0;i<L.length;i++)
    {
            if (L.data[i]==e)
                    break;
    }
    if(i>=L.length)
            return 0;

    return i+1;
}

/*
**在L中第i个位置之前插入新的元素e,L的长度加1
*/
int list_insert(SqList *L, int i,ElemType e)
{
	int k;
	if(L->length==MAXLENGTH)
		return ERROR;
	if(i<1 || i>L->length+1)  /*length 这里考虑到插入尾部的情况,插入尾部是尾部后一个元素的前一个位置进行插入,所以需+1*/
		return ERROR;
	if(i<=L->length){
		for(k=L->length-1;k>=i-1;k--) /*将要插入位置后数据元素向后移动一位*/
			L->data[k+1]=L->data[k];
	}
	L->data[i-1]=e;
	L->length++;
	return OK;
}

/*
**删除L的第i个元素,并用e返回其值,L的长度减1
*/
int list_delete(SqList *L,int i, ElemType *e)
{
	int k;
	if(L->length==0)
		return ERROR;
	if(i<1 || i>L->length)   /*删除位置超出范围*/
		return ERROR;
	*e=L->data[i-1];       /*保存返回值*/
	if(i<L->length){		/*不含等于这种情况,等于是直接长度减1,不进行数据交换*/
		for(k=i;k<L->length;k++)
			L->data[k-1]=L->data[k]; /*将删除位置后继元素前移*/
	}
	L->length--;
	return OK;
}
 

int main()
{
	SqList linear_list={			/*线性表初始化*/
		{1,2,3,4,5,6,8,9,10},
		9
	};

	if(1==list_insert(&linear_list,7,7)){   /*第7个数位置钱插入7*/
		cout<<"insert OK!"<<endl;
	}else{
		cout<<"insert ERROR!"<<endl;
	}

	int del_val=0;
	if(1==list_delete(&linear_list,6,&del_val)){   /*将第六个位置的元素删除*/
		cout<<del_val<<"is deleted!"<<endl;
	}else{
		cout<<"delete ERROR!"<<endl;
	}

	int get_val=0;
	if(1==get_elem(linear_list,2,&get_val)){   /*获取第2个位置的元素*/
		cout<<get_val<<"is got!"<<endl;
	}else{
		cout<<"get ERROR!"<<endl;
	}

	for(int i=0;i<linear_list.length;i++) /*结构体中的数组采用循环答应的方式输出*/
		cout<<linear_list.data[i]<<endl;	
	
	cout<<locate_elem(linear_list,5)<<endl;
}#include<iostream>
using namespace std;

#defin



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: