数据结构实验一——线性表及其应用

***题目:***编写一个程序,实现顺序表的各种基本运算,在此基础上完成如下功能:
(1) 初始化顺序表L。
(2) 依次在顺序表L中插入元素a、b、c、e、f(从键盘输入数据)。
(3) 输出顺序表L。
(4) 输出顺序表L的长度。
(5) 输出顺序表L的第4个元素。
(6) 输出元素c的位置。
(7) 在第5个元素之前插入元素g。
(8) 输出顺序表L。
(9) 删除第3个元素。
(10) 输出顺序表L。
**

实验代码:

**

#include
#include
using namespace std; 
#define MAXSIZE 100
/*typedef struct{
	char AData[MAXSIZE];
}infor;*/
typedef struct{
	char *elem;
	int length;
}Sqlist;

void Getelem(Sqlist L,int i){   //查找位置对应元素子函数
	if(i<1||i>L.length) 
		printf("您想要查找的位置不在顺序表中\n");
/*	return e;*/
	printf("顺序表的第4个元素为:%c\n",L.elem[i-1]);
}

void LocationElem(Sqlist L,char e){      //查找元素对应位置子函数
	int i;
	for(i=0;i<L.length;i++){
		if(L.elem[i]==e)
			printf("元素c对应的位置为:%d\n",i+1);
	}
}

int ListIsert(Sqlist &L,int t,int i,char e){   //指定位置插入数据元素子函数
	int j; 
	if((i<1)||(i>t+1)) printf("您输入的元素位置不在顺序表的长度里");
	if(t==MAXSIZE) printf("顺序表已达到最大长度");
	for(j=t-1;j>=4;j--)
		L.elem[j+1]=L.elem[j];
	L.elem[i-1]=e;
	return ++t;	
}

int Deletlist(Sqlist &L,int t,int i){     //删除指定位置元素子函数
	int j;
	if((i<1)||(i>t)) 
		printf("您输入的位置不在顺序表中\n");
	for(j=i;j<t;j++)
		L.elem[j-1]=L.elem[j];
	return --t;
}

void print(Sqlist L,int t){           //输出顺序表子函数
	int i;
	
	for(i=0;i<t;i++){
		if(i<t-1)
			printf("%c ",L.elem[i]);
		else
			printf("%c\n",L.elem[i]);
	}
}

int main(){
	Sqlist L;
	//顺序表初始化
	L.elem=new char[MAXSIZE];
	if(!L.elem) return 0;
	L.length=0;
	int i;
	printf("请输入顺序表元素:");
	//输入顺序表中的元素
	for(i=0;;i++){
		scanf("%c",&L.elem[i]);
		L.length++;
		if(L.elem[i]=='f')  break;
		getchar();
	}
	printf("顺序表元素输出结果为:");
	print(L,L.length);
	int j;
	Getelem(L,4);          //查找位置对应元素子函数
	LocationElem(L,'c');   //查找元素对应位置子函数
	L.length=ListIsert(L,L.length,5,'g');   //指定位置插入数据元素:
	printf("插入后的顺序表为:");    //输出顺序表子函数
	print(L,L.length);
	L.length=Deletlist(L,L.length,3);   //删除位置对应的数据元素
	printf("删除后的顺序表为:");
	print(L,L.length);
	return 0;
}

**

运行结果:

**
数据结构实验一——线性表及其应用_第1张图片

你可能感兴趣的:(数据结构,C/C++)