西工大数据结构理论NOJ顺序表

自己动手写的(已经AC通过),因为编译软件用的是VS,所以主要是用C++语言完成

#include<iostream>
using namespace std;
#define maxsize 1000
class sqlist {
public:
	int data[maxsize];
	int length;
	void insert(int num);
	void display();
};
void sqlist::display()
{
	for (int i = 0; i < this->length; i++)
	{
		cout << data[i] << " ";
	}
}
void sqlist:: insert(int num)
{
	int i;
	for (i = 0; i < length; i++)
	{
		if (data[i] >= num)
			break;
	}
	for (int j = length - 1; j >= i; j--)
	{
		data[j + 1] = data[j];
	}
	data[i] = num;
	length++;
}
int main()
{
	sqlist sq;
	int enumb;
	int num;
	cin >> enumb;
	sq.length = enumb;
	for (int i = 0; i < enumb; i++)
		cin >> sq.data[i];
	cin >> num;
	sq.insert(num);
	sq.display();
	return 0;
}

#include<iostream>
using namespace std;
#define maxsize 1000
class sqlist {
public:
	int data[maxsize];
	int length;
	void inverse();
	void display();
};
typedef struct lnode
{
	int data;
	struct lnode* next;
}lnode;
lnode* initlinklist()
{
	lnode* p = (lnode*)malloc(sizeof(lnode));
	p->data = 0;
	p->next = NULL;
	return p;
}
void insertlinklist(lnode* L, int i, int e)
{
	lnode* p = L;
	int j = 0;
	while (p && j < i - 1)
	{
		p = p->next;
		j++;
	}
	if (!p || j > i - 1)
		return;
	lnode* temp = (lnode*)malloc(sizeof(lnode));
	temp->data = e;
	temp->next = p->next;
	p->next = temp;
	return;
}
void inversel(lnode* L, int enumb)
{
	lnode* p = L->next;
	lnode* q = p;
	L->next = NULL;
	for (int i = 0; i < enumb; i++)
	{
		if (i != 0)
			q = p;
		p = p->next;
		q->next = L->next;
		L->next = q;
	}
}
void destroylinklist(lnode* p)
{
	lnode* fr = NULL;
	while (p)
	{
		fr = p;
		p = p->next;
		free(fr);
	}
}
void sqlist::display()
{
	for (int i = 0; i < this->length; i++)
	{
		cout << data[i] << " ";
	}
	cout << endl;
}
void sqlist::inverse()
{
	int temp = 0;
	for (int i = 0; i < (1 + length) / 2; i++)
	{
		temp = data[i];
		data[i] = data[length - i - 1];
		data[length - i - 1] = temp;
	}
}

int main()
{
	int enumb;
	sqlist sq;
	lnode* p = initlinklist();
	cin >> enumb;
	sq.length = enumb;
	for (int i = 0; i < sq.length; i++)
	{
		int num;
		cin >> num;
		sq.data[i] = num;
		insertlinklist(p, i + 1, num);
	}
	sq.inverse();
	sq.display();
	inversel(p, enumb);
	p = p->next;
	while (p)
	{
		cout << p->data << " ";
		p = p->next;
	}
	destroylinklist(p);
	return 0;
}

 

#include<iostream>
using namespace std;
#define maxsize 1000
class sqlist {
public:
	int data[maxsize];
	int length;
	int search(int e);
	void insert(int num);
	void display();
	void desqlist(int e);
};
void sqlist::display()
{
	for (int i = 0; i < this->length; i++)
	{
		cout << data[i] << " ";
	}
}
void sqlist::insert(int num)
{
	int i;
	for (i = 0; i < length; i++)
	{
		if (num >= data[i])
			break;
	}
	for (int j = length - 1; j >= i; j++)
	{
		data[j+1] = data[j];
	}
	data[i] = num;
	length++;
}
int sqlist::search(int e)
{
	for (int i = 0; i < length; i++)
	{
		if (data[i] == e)
			return 1;
	}
	return 0;
}
void sqlist::desqlist(int e)
{
	if (search(e) == 0)
		return;
	int j;
	for (j = 0; j < length; j++)
	{
		if (data[j] == e)
			break;
	}
	for (int i = j; i < length; i++)
	{
		data[i] = data[i+1];
	}
	length--;
}
int main()
{
	sqlist A, B, C;
	cin >> A.length >> B.length >> C.length;
	for (int i = 0; i < A.length; i++)
	{
		cin >> A.data[i];
	}
	for (int i = 0; i < B.length; i++)
	{
		cin >> B.data[i];
	}
	for (int i = 0; i < C.length; i++)
	{
		cin >> C.data[i];
	}
	for (int j = 0; j < B.length; j++)
	{
		if (C.search(B.data[j]))
			A.desqlist(B.data[j]);
	}
	A.display();
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值