顺序表
#ifndef SEQLIST_H
#define SEQLIST_H
typedef int DataType;
struct Node {
int MaxNum;
int num;
DataType *element;
};
typedef struct Node SeqList;
typedef struct Node *PSeqList;
PSeqList createNullList_Seq(int m);
int isNullList_Seq(PSeqList p);
int insertPre_Seq(PSeqList p, int d, DataType x);
int deleteSeq(PSeqList p, int d);
int delateValue(PSeqList plist, DataType x);
void print(PSeqList p);
#endif
#include"pch.h"
#include"SeqList.h"
#include<iostream>
using namespace std;
PSeqList createNullList_Seq(int m) {
PSeqList p = new SeqList;
if (p != NULL) {
p->element = new DataType[m];
if (p->element != NULL) {
p->MaxNum = m;
p->num = 0;
return p;
}
else free(p);
}
cout << "Out of space!!" << endl;
return NULL;
}
int isNullList_Seq(PSeqList p) {
return(p->num == 0);
}
int insertPre_Seq(PSeqList p, int d, DataType x) {
if (p->num >= p->MaxNum) {
cout << "OverFlow!" << endl;
return 0;
}
if (d<0 || d>p->num) {
cout << "No exit!" << endl;
return 0;
}
int i;
for (i = p->num - 1; i >= d; i--) {
p->element[i + 1] = p->element[i];
}
p->element[d] = x;
p->num += 1;
return 1;
}
int deleteSeq(PSeqList p, int d) {
if (d<0 || d>p->num - 1) {
cout << "NO exit!" << endl;
return 0;
}
for (int i = d; i < p->num; i++) {
p->element[i] = p->element[i + 1];
}
p->num -= 1;
return 1;
}
int delateValue(PSeqList plist, DataType x) {
PSeqList p = plist;
if (p->num == 0) {
cout << "Empty List!" << endl;
return 0;
}
for (int i = 0; i < p->num; i++)
{
if (p->element[i] == x) {
deleteSeq(p, i);
}
}
return 1;
}
void print(PSeqList p) {
int m = p->num;
for (int i = 0; i < m; i++) {
cout << p->element[i] << " ";
}
cout << endl;
}
链表
#pragma once
#ifndef LIST_H
#define LIST_H
#include<iostream>
using namespace std;
typedef int DataType;
typedef struct node {
DataType info;
struct node *next;
}Node, *PLinkList;
PLinkList createNullList();
int isNullList(PLinkList p);
PLinkList locate_link(PLinkList p, DataType x);
int print(PLinkList plist);
#endif
#include"pch.h"
#include"List.h"
#include<iostream>
using namespace std;
PLinkList createNullList() {
PLinkList head, tail, temp;
DataType elem = -1;
head = new Node;
if (head == NULL)
cout << "Out of space!" << endl;
head->next = NULL;
tail = head;
while (true) {
cin >> elem;
if (elem == 0)break;
temp = new Node;
if (temp == NULL) {
cout << "申请空间失败!" << endl;
break;
}
temp->info = elem;
temp->next = NULL;
tail->next = temp;
tail = temp;
}
return head;
}
int isNullList(PLinkList p) {
return (p->next == NULL);
}
PLinkList locate_link(PLinkList p, DataType x) {
PLinkList q;
if (p == NULL)return NULL;
q = p->next;
while (q->next != NULL && q->info != x)
q = q->next;
return q;
}
int print(PLinkList plist) {
PLinkList p = plist->next;
if (p == NULL)return 0;
while (p != NULL) {
cout << p->info << " ";
p = p->next;
}
return 0;
}