數據結構實驗一——線性表及其應用

***題目:***編寫一個程序,實現順序表的各種基本運算,在此基礎上完成如下功能:
(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<stdio.h>
#include<iostream>
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;
}

**

運行結果:

**
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章