线性表顺序存储结构的基本操作(C++)

头文件引入

#define MAXSIZE 100 
#define OVERFLOW -2
#define OK 1
#define ERROR -1
#define TRUE 1
#define FALSE 0

typedef int Elemtype;
typedef int Status;

#include <xmemory>
#include <iostream>
using namespace std;

定义一个结构体,操作如下:

typedef struct SqList
{
	int* elem;
	int length;
}SqList;

1.线性表的初始化

Status IntList_Sq(SqList &L)
{
	//L.elem = (int*)malloc(MAXSIZE * (sizeof(int)));
	L.elem = new int[MAXSIZE];
	if (!L.elem) exit(OVERFLOW);
	L.length = 0;
	return OK;
}

2.销毁线性表

void DestroyList(SqList& L)
{
	if (L.elem) delete L.elem;
}

3.清空线性表

void ClearList(SqList& L)
{
	L.length = 0;
}

4.求线性表的长度

Status GetLength(SqList L)
{
	return L.length;
}

5.判断线性表L是否为空

Status Isempty(SqList L)
{
	if (L.length == 0) return 1;
	else return 0;
}

6.判断线性表L是否已满

Status Isfull(SqList L)
{
	if (L.length == MAXSIZE) return 1;
	else return 0;
}

7.顺序表的取值

Status Getelem(SqList L, int i, int& e)
{
	if (i < 1 || i > L.length) return ERROR;
	e = L.elem[i - 1];
	return OK;
}

8.顺序表—>定位元素

Status compare(Elemtype *p, Elemtype &e)
{
	if (*p == e) return 1;
	else return 0;
}

Status locateElem(SqList L, Elemtype e,Status(*compare)(Elemtype,Elemtype))
{
	int *p = L.elem;
	int i = 1;
	while (i <= L.length && !compare(*p++,e))
	{
		i++;
	}
	if (i <= L.length) return i;
	else return 0;
}

9.顺序表—>在第i个之前,插入一个数据元素

int InsertElem(SqList &L,int i,Elemtype e)
{
	if (i < 1 || i > L.length + 1) return ERROR;
	if (L.length == MAXSIZE) return ERROR;

	for (int x = L.length - 1; x >= i-1; x--)
	{
		L.elem[x + 1] = L.elem[x];
	}
	L.elem[i - 1] = e;
	++L.length;
	return OK;
}

10.顺序表—>删除第i个元素

Status DeleteElem(SqList& L, int i, Elemtype e)
{
	if ((i < 1) || (i > L.length)) return ERROR;
	e = L.elem[i - 1];
	for (int x = i; x <= L.length; x++)
	{
		L.elem[x-1] = L.elem[x];
	}
	--L.length;
	return OK;
}

实践才能检验自己的知识,这些代码一定要自己敲一遍!!!,否则你很难真正把握它。

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++线性表顺序存储结构可以用来实现图书管理系统,其基本思路是将所有的图书信息存储在一个数组中,每本书对应数组中的一个元素。每个元素包含图书的相关信息,如编号、名称、作者、出版社、价格等等。 具体实现过程中,需要定义一个结构体来存储每本书的信息,然后使用数组来存储所有的书籍。可以定义如下的结构体: ``` struct Book { int id; // 书籍编号 string name; // 书籍名称 string author; // 作者 string publisher; // 出版社 double price; // 价格 }; ``` 接下来,我们可以定义一个类来实现图书管理系统。这个类包括添加图书、删除图书、查找图书等基本功能。其中,添加图书操作可以使用数组的末尾添加,删除图书操作可以使用移动元素位置来实现,查找图书操作可以遍历整个数组进行查找。 下面是一个简单的示例代码: ``` #include <iostream> #include <string> using namespace std; const int MAX_SIZE = 100; // 数组最大长度 class BookManagementSystem { private: Book books[MAX_SIZE]; // 用于存储图书信息的数组 int size; // 数组中存储的图书数量 public: BookManagementSystem() { size = 0; } // 添加图书 void addBook(int id, string name, string author, string publisher, double price) { if (size >= MAX_SIZE) { cout << "图书库已满,无法添加新书!" << endl; return; } books[size].id = id; books[size].name = name; books[size].author = author; books[size].publisher = publisher; books[size].price = price; size++; cout << "添加成功!" << endl; } // 删除图书 void deleteBook(int id) { int pos = -1; // 找到要删除的元素位置 for (int i = 0; i < size; i++) { if (books[i].id == id) { pos = i; break; } } if (pos == -1) { cout << "未找到该编号的图书!" << endl; return; } for (int i = pos; i < size - 1; i++) { books[i] = books[i + 1]; } size--; cout << "删除成功!" << endl; } // 查找图书 void searchBook(int id) { for (int i = 0; i < size; i++) { if (books[i].id == id) { cout << "编号:" << books[i].id << endl; cout << "名称:" << books[i].name << endl; cout << "作者:" << books[i].author << endl; cout << "出版社:" << books[i].publisher << endl; cout << "价格:" << books[i].price << endl; return; } } cout << "未找到该编号的图书!" << endl; } }; int main() { BookManagementSystem bms; bms.addBook(1001, "C++程序设计", "张三", "清华大学出版社", 39.8); bms.addBook(1002, "Java程序设计", "李四", "人民邮电出版社", 45.6); bms.addBook(1003, "Python编程入门", "王五", "电子工业出版社", 29.9); bms.deleteBook(1002); bms.searchBook(1003); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值