1. 程式人生 > 其它 >資料結構之順序表

資料結構之順序表

構造一個空的順序表

#define MAX_SIZE 100

typedef struct
{
	int *address;//基地址
	int length;//順序表長度
	int size;//順序表總空間
}LIST;

//建立一個空的順序表
bool initList(LIST& list)
{
	list.address = new int[MAX_SIZE];
	if (!list.address) return false;

	list.length = 0;
	list.size = MAX_SIZE;
	return true;
}

  尾部新增資料

bool addPUSH(LIST& list,int data)
{
	if (list.length >= MAX_SIZE) return false;

	list.address[list.length] = data;
	list.length++;
	return true;
}

  範圍內插入資料

bool ListInsert(LIST& list, int i, int data)
{
	if (i < 0 || i >= 100) return false;
	if (list.length == MAX_SIZE) return false;

	for (int j = list.length-1; j >= i; j--)
	{
		list.address[j + 1] = list.address[j];//從最後一個元素開始後移,直到第 i 個元 素後移
	}

	list.address[i] = data;//將新元素 e 放入第 i 個位置
	list.length++;//表加一
	return true;
}

  刪除資料

bool Listdelete(LIST& list, int addr)
{
	if (addr<0 || addr>list.length) return false;

	if (addr == list.length - 1)
	{
		list.length--;
		return true;
	}

	for (int i = addr; i < list.length; i++)
	{
		list.address[i] = list.address[i +1];
	}
	list.length--;
	return true;
}

  順序表銷燬

bool destroyList(LIST& list)
{
	if (list.address) delete []list.address;
	list.length = 0;
	list.size = 0;
	return true;
}

  main函式

LIST list;

	cout << "初始化順序表" << endl;
	if (initList(list))
	{
		cout << "順序表初始化成功" << endl;
		
	}

	int count = 0;
	cout << "追加個數\t" ;
	cin >> count;
	int data = 0;
	for (int i = 0; i < count; i++)
	{
		cout << "引數:\t";
		cin >> data;
		cout<<endl;
		addPUSH(list, data);
	}
	listPrint(list);

	cout << "插入位置:\t" ;
	cin >> count;
		cout << "引數:\t";
		cin >> data;
		cout << endl;
		ListInsert(list, count, data);

		listPrint(list);
		
		cout << "所需刪除的資料的地址:" ;
		cin >> data;
		if (Listdelete(list, data)) cout << "\t刪除成功" << endl;
		else cout << "\t刪除失敗" << endl;
		listPrint(list);
cout << "順序表銷燬..." << endl;
		destroyList(list);
		listPrint(list);

 

	system("pause");

  編譯環境VS2019

注:如有錯誤請與我聯絡,萬分感謝!!!