1、顺序表删除:删除第i个元素,并返回删除值
#include <iostream>
using namespace std;
#define eletype char
#define maxsize 50
typedef struct SList {
eletype A[maxsize];
unsigned lenth = 0;
}SList, * SSList;
void initList(SSList L) {
if (!L->A) {
exit(OVERFLOW);
}
for (int i = 0; i < 10; i++)
{
L->A[i] = i + 97;
L->lenth++;
}
}
void printSList(SSList L) {
cout << "静态表:";
for (int i = 0; i < L->lenth; i++) {
cout << L->A[i] << " ";
}
cout << endl;
}
void dele(SSList L ,int n) {
eletype e = L->A[n];
for (int i = n-1; i <L->lenth -1; i++) {
L->A[i] = L->A[i + 1];
}
L->lenth--;
}
int main()
{
SSList L = new SList;
initList(L);
printSList(L);
dele(L, 3);
printSList(L);
return 0;
}
2、顺序表求最值(最大,最小)
#include <iostream>
using namespace std;
#define eletype char
#define maxsize 50
typedef struct SList {
eletype A[maxsize];
unsigned lenth = 0;
}SList, * SSList;
void initList(SSList L) {
if (!L->A) {
exit(OVERFLOW);
}
for (int i = 0; i < 10; i++)
{
L->A[i] = i + 97;
L->lenth++;
}
}
void printSList(SSList L) {
cout << "静态表:";
for (int i = 0; i < L->lenth; i++) {
cout << L->A[i] << " ";
}
cout << endl;
}
void maxeletype(SSList L) {
eletype max = L->A[0];
for (int i = 0; i < L->lenth; i++) {
if (L->A[i] > max) {
max = L->A[i];
}
}
cout << "max=" << max<<endl;
}
void mineletype(SSList L) {
eletype min = L->A[0];
for (int i = 0; i < L->lenth; i++) {
if (L->A[i] < min) {
min = L->A[i];
}
}
cout << "min=" << min<<endl;
}
int main()
{
SSList L = new SList;
initList(L);
printSList(L);
maxeletype(L);
mineletype(L);
return 0;
}
3、顺序表查找第i个元素
#include <iostream>
using namespace std;
#define eletype char
#define maxsize 50
typedef struct SList {
eletype A[maxsize];
unsigned lenth = 0;
}SList, * SSList;
void initList(SSList L) {
if (!L->A) {
exit(OVERFLOW);
}
for (int i = 0; i < 10; i++)
{
L->A[i] = i + 97;
L->lenth++;
}
}
void printSList(SSList L) {
cout << "静态表:";
for (int i = 0; i < L->lenth; i++) {
cout << L->A[i] << " ";
}
cout << endl;
}
eletype findeletype(SSList L,int n) {
return L->A[n-1];
}
int main()
{
SSList L = new SList;
initList(L);
printSList(L);
cout<< findeletype(L, 3)<<endl;
return 0;
}
4、顺序表查找e位于第几个元素
#include <iostream>
using namespace std;
#define eletype char
#define maxsize 50
typedef struct SList {
eletype A[maxsize];
unsigned lenth = 0;
}SList, * SSList;
void initList(SSList L) {
if (!L->A) {
exit(OVERFLOW);
}
for (int i = 0; i < 10; i++)
{
L->A[i] = i + 97;
L->lenth++;
}
}
void printSList(SSList L) {
cout << "静态表:";
for (int i = 0; i < L->lenth; i++) {
cout << L->A[i] << " ";
}
cout << endl;
}
int findeletype(SSList L,eletype e) {
for (int i = 0; i < L->lenth; i++) {
if (L->A[i] == e)
return i + 1;
}
}
int main()
{
SSList L = new SList;
initList(L);
printSList(L);
cout<< findeletype(L, 'e')<<endl;
return 0;
}
5、链表建立1~10个元素:头插法
#include <iostream>
using namespace std;
#define eletype char
typedef struct LNode {
eletype data;
struct LNode* next;
}LNode, * LinkList;
void Initdata(LinkList L) {
for (int i = 0; i < 10; i++) {
LinkList p = new LNode;
p->data = i + 97;
p->next = L->next;
L->next = p;
}
}
void printdata(LinkList head) {
LinkList r = head->next;
while (r) {
cout << r->data << " ";
r = r->next;
}
cout << endl;
}
int main()
{
LinkList L = new LNode;
L->next = NULL;
Initdata(L);
printdata(L);
return 0;
}
6、链表建立1~10个元素:尾插法
#include <iostream>
using namespace std;
#define eletype char
typedef struct LNode {
eletype data;
struct LNode* next;
}LNode, * LinkList;
void Initdata(LinkList L) {
LinkList r = L;
for (int i = 0; i < 10; i++) {
LinkList p = new LNode;
p->data = i + 97;
p->next = r->next;
r->next = p;
r = r->next;
}
}
void printdata(LinkList head) {
LinkList r = head->next;
while (r) {
cout << r->data << " ";
r = r->next;
}
cout << endl;
}
int main()
{
LinkList L = new LNode;
L->next = NULL;
Initdata(L);
printdata(L);
return 0;
}
7、链表新增:在第i个位置插入元素e
#include <iostream>
using namespace std;
#define eletype char
typedef struct LNode {
eletype data;
struct LNode* next;
}LNode, * LinkList;
void Initeletype(LinkList head) {
for (int i = 0; i < 10; i++) {
LinkList p = new LNode;
p->data = i + 97;
p->next = head->next;
head->next = p;
}
}
void addeletype(LinkList head,int n,eletype e) {
LinkList p = new LNode;
p->data = e;
LinkList r = head;
for (int i = 1; i < n; i++) {
r = r->next;
}
p->next = r->next;
r->next = p;
}
void printdata(LinkList head) {
LinkList r = head->next;
while (r) {
cout << r->data << " ";
r = r->next;
}
cout << endl;
}
int main()
{
LinkList L = new LNode;
L->next = NULL;
Initeletype(L);
addeletype(L, 3, 'z');
printdata(L);
return 0;
}
8、链表删除:删除第i个元素,并返回删除值
#include <iostream>
using namespace std;
#define eletype char
typedef struct LNode {
eletype data;
struct LNode* next;
}LNode, * LinkList;
void Initeletype(LinkList head) {
for (int i = 0; i < 10; i++) {
LinkList p = new LNode;
p->data = i + 97;
p->next = head->next;
head->next = p;
}
}
int deleletype(LinkList head,int n) {
LinkList r = head;
for (int i = 1; i < n; i++) {
r = r->next;
}
int ans = r->next->data;
r->next = r->next->next;
return ans;
}
void printdata(LinkList head) {
LinkList r = head->next;
while (r) {
cout << r->data << " ";
r = r->next;
}
cout << endl;
}
int main()
{
LinkList L = new LNode;
L->next = NULL;
Initeletype(L);
deleletype(L, 3);
printdata(L);
return 0;
}
9、链表删除:删除所有指定元素e
#include <iostream>
using namespace std;
#define eletype char
typedef struct LNode {
eletype data;
struct LNode* next;
}LNode, * LinkList;
void Initeletype(LinkList head) {
for (int i = 0; i < 10; i++) {
LinkList p = new LNode;
p->data = i + 97;
p->next = head->next;
head->next = p;
}
for (int i = 0; i < 10; i++) {
LinkList p = new LNode;
p->data = i + 97;
p->next = head->next;
head->next = p;
}
}
void delalleletype(LinkList head,eletype e) {
LinkList r = head;
while (r) {
if (r->next->data == e) {
r->next = r->next->next;
}
r = r->next;
}
}
void printdata(LinkList head) {
LinkList r = head->next;
while (r) {
cout << r->data << " ";
r = r->next;
}
cout << endl;
}
int main()
{
LinkList L = new LNode;
L->next = NULL;
Initeletype(L);
delalleletype(L, 'a');
printdata(L);
return 0;
}