数据结构线性表操作-动态数组生成

时间:2019-03-21
本文章向大家介绍数据结构线性表操作-动态数组生成,主要包括数据结构线性表操作-动态数组生成使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#include <iostream>
#include <stdlib.h>
#define MAXSIZE 5
using namespace std;
typedef struct
{
	char *elem;    //储存空间基地址
	int length;    //当前长度
}SqList;

//初始化顺序表
int InitList(SqList *L)
{
	
	L->elem=new char[MAXSIZE];
	if(!L->elem) exit(OVERFLOW);
	L->length=4;
	return L->length;
}
//插入数据
void ListInsert(SqList *L)
{
	

	cout<<"请输入字符:";
	for(int i=0;i<4;i++)
	{
		cin>>L->elem[i];
	}

}
//打印表中数据
void print(SqList *L,int Length)
{
	int i;
	cout<<"顺序表L中数据有:";
	for(i=0;i<Length;i++)
	{
		cout<<L->elem[i]<<" ";
	}
	cout<<endl;
}
//打印4-6的要求
void f_s(SqList *L)
{
	cout<<"顺序表L长度为:"<<4<<endl;
	cout<<"表中第三个元素为:"<<L->elem[2]<<endl;

	int idx;
	for(int i=0;i<4;i++)
	{
		if(L->elem[i]=='a')
			idx=i;
	}
	cout<<"表中元素a的位置为:"<<idx+1<<endl;
}
//插入字符
void add(SqList *L,int Length)
{
	char temp;
	cout<<"请输入你要插入的字符:";
	cin>>temp;
	
	L->elem[4]=L->elem[3];       //在结尾处插入字符
	L->elem[3]=temp;
	print(L,Length+1);           //链表长度加1
	
}

//删除数据
void ListDelete(SqList *L,int Length)
{
	int i;
	cout<<"请问删除表中第几个元素"<<endl;
	cin>>i;

	while(i<Length)
	{
		L->elem[i-1]=L->elem[i];   //将删除后面的数据放入删除位置
		i++;
	}
	Length--;    //表长度减一
	print(L,Length);
}

void main()
{

	SqList *L=new SqList;

	//初始化顺序表
	int Length=InitList(L);

	//插入数据
	ListInsert(L);

	//打印表L中数据
	print(L,Length);

	f_s(L);

	//增加表L中数据
	add(L,Length);
	
	//删除表L中数据
	ListDelete(L,Length+1);

	system("pause");

}