顺序表:
#include<iostream>
using namespace std;
void menu() {
cout << "1.创建" << endl;
cout << "2.查询" << endl;
cout << "3.取值" << endl;
cout << "4.插入" << endl;
cout << "5.删除" << endl;
cout << "6.输出" << endl;
cout << "7.退出" << endl;
cout << endl;
}
void create(int &len, int **head) {
cout << "请输入创建顺序表的长度:" << endl;
cin >> len;
*head = (int*)malloc(sizeof(int) * len + 1000);
for (int i = 0; i < len; i++) {
cout << "请输入第" << i + 1 << "个数据:" << endl;
int tmp;
cin >> tmp;
(*head)[i] = tmp;
}
cout << "顺序表创建完成!" << endl;
}
void check(int *head, int len) {
cout << "请输入要查询的值:" << endl;
int n;
cin >> n;
for (int i = 0; i < len; i++) {
if (head[i] == n)
cout << "您要查询的值是顺序表的第" << i + 1 << "个元素" << endl;
}
}
void getValue(int *head) {
cout << "请输入要取第几个元素的值:" << endl;
int n;
cin >> n;
cout << "第" << n << "个值是:" << head[n - 1] << endl;
}
void insert(int **head, int &len) {
cout << "请输入要在第几个数后面插入:" << endl;
int n;
cin >> n;
for (int i = len; i > n; i--) {
(*head)[i] = (*head)[i - 1];
}
len++;
cout << "请输入要插入的值:" << endl;
int t;
cin >> t;
(*head)[n] = t;
}
void _delete(int **head, int &len) {
cout << "请输入要删除第几个数:" << endl;
int n;
cin >> n;
for (int i = n - 1; i < len - 1; i++) {
(*head)[i] = (*head)[i + 1];
}
len--;
}
void show(int *head, int len) {
cout << "整个顺序表如下:" << endl;
for (int i = 0; i < len; i++) {
cout << head[i] << " ";
}
cout << endl;
}
inline void clear() {
system("pause");
system("cls");
}
int main() {
int choose;
int len;
int *head=nullptr;
while (1) {
menu();
cout << "请输入一个选项:" << endl;
cin >> choose;
switch (choose) {
case 1:
create(len, &head);
clear();
break;
case 2:
check(head, len);
clear();
break;
case 3:
getValue(head);
clear();
break;
case 4:
insert(&head, len);
clear();
break;
case 5:
_delete(&head, len);
clear();
break;
case 6:
show(head, len);
clear();
break;
case 7:
cout << "欢迎下次使用!" << endl;
exit(0);
default:
system("cls");
cout << "输入有误,请重新输入!" << endl;
system("pause");
break;
}
}
return 0;
}
链表:
#include<iostream>
using namespace std;
struct LNode {
int data;
struct LNode *next;
};
void menu() {
cout << "1.创建" << endl;
cout << "2.查询" << endl;
cout << "3.取值" << endl;
cout << "4.插入" << endl;
cout << "5.删除" << endl;
cout << "6.输出" << endl;
cout << "7.退出" << endl;
cout << endl;
}
void create(LNode *head) {
cout << "(请输入999已停止链表的创建)" << endl;
int i = 1, n = 1;
LNode *p = head;
while (n != 999) {
cout << "请输入第" << i++ << "个节点的数:" << endl;
cin >> n;
LNode *node = new LNode;
node->data = n;
p->next = node;
p = node;
}
p->next = nullptr;
}
void check(LNode *head) {
cout << "请输入要查询的值:" << endl;
int n, j = 1;
cin >> n;
LNode* p = head;
while (p->next->next != nullptr) {
p = p->next;
if (p->data == n) {
cout << "您要查询的值是第" << j << "个" << endl;
return;
}
j++;
}
}
void getValid(LNode *head) {
cout << "请输入要查询第几个数" << endl;
int n, j = 1;
cin >> n;
LNode *p = head;
while (p->next->next != nullptr) {
p = p->next;
if (j == n) {
cout << "您要查询的值是:" << p->data << endl;
return;
}
j++;
}
}
void insert(LNode *head) {
cout << "请输入要插入第几个节点后" << endl;
int n, j = 0;
cin >> n;
LNode *p = head;
while (p->next->next != nullptr) {
p = p->next;
j++;
}
if (n > j || n < 1) {
cout << "您的插入位置不合法" << endl;
return;
}
cout << "请输入要要插入的数" << endl;
int newval;
cin >> newval;
LNode *p1 = head;
for (int i = 0; i < n; i++) {
p1 = p1->next;
}
LNode *newnode = new LNode;
newnode->data = newval;
newnode->next = p1->next;
p1->next = newnode;
}
void Delete(LNode *head) {
cout << "请输入要删除第几个节点后" << endl;
int n, j = 0;
cin >> n;
LNode *p = head;
while (p->next->next != nullptr) {
p = p->next;
j++;
}
if (n > j || n < 1) {
cout << "您的删除位置不合法" << endl;
return;
}
LNode *p1 = head;
for (int i = 0; i < n - 1; i++) {
p1 = p1->next;
}
p1->next = p1->next->next;
}
void output(LNode *head) {
cout << "整表如下:" << endl;
LNode *r = head;
while (r->next->next != nullptr) {
r = r->next;
cout << r->data << " ";
}
}
inline void clear() {
system("pause");
system("cls");
}
int main() {
int choose;
LNode *head = new LNode;
while (1) {
menu();
cout << "请输入选项:" << endl;
cin >> choose;
switch (choose) {
case 1:
create(head);
clear();
break;
case 2:
check(head);
clear();
break;
case 3:
getValid(head);
clear();
break;
case 4:
insert(head);
clear();
break;
case 5:
Delete(head);
clear();
break;
case 6:
output(head);
clear();
break;
case 7:
cout << "欢迎下次使用!" << endl;
exit(0);
default:
system("cls");
cout << "您的输入有误,请重新输入!" << endl;
system("pause");
break;
}
}
return 0;
}