建立一个长度为n的线性表,例如学生表或图书表,要求n>5,存储结构可选顺序存储或链式存储,并输出该线性表且每个数据元素信息占一行;输入样例如下: 9787302257646 程序设计基础 25.00 9787302164340 程序设计基础(第 2 版) 20.00 9787302219972 单片机技术及应用 32.00 9787302203513 单片机原理与应用技术 26.00 9787810827430 工业计算机控制技术——原理与应用 29.00 9787811234923 汇编语言程序设计教程 21.00根据数据元素的某项信息进行线性表的查找,并输出查找结果,包含查找成功和不成功两种情况;在第i个元素前面插入一个新元素x(包含具体元素信息),得到一个长度为(n+1)的线性表,并输出该线性表;删除第j个元素,得到长度为n的线性表,并输出该线性表。 使用链表
#include<iostream>
using namespace std
;
#include<string>
#include<iomanip>
typedef struct LNode
{
string num
;
string name
;
double price
;
LNode
*next
;
}LNode
,*LinkList
;
void ShowMenu() {
cout
<< "*******欢迎光临太原理工大学图书管理系统*******" << endl
;
cout
<< "***************首次操作请先按0****************" << endl
;
cout
<< "***************0.显示原始图书表***************" << endl
;
cout
<< "***************1.查找图书*********************" << endl
;
cout
<< "***************2.插入元素*********************" << endl
;
cout
<< "***************3.删除元素*********************" << endl
;
cout
<< "***************4.退出系统*********************" << endl
;
}
void InitList(LinkList
&L
) {
L
= new LNode
;
L
->next
= NULL;
string a
[6] = { "9787302257646","9787302164340","9787302219972","9787302203513","978710827430","9787811234923" };
string b
[6] = { "程序设计基础","程序设计基础(第2版)","单片机技术及应用","单片机原理与应用技术","工业计算机控制技术——原理与应用","汇编语言程序设计教程" };
double c
[6] = { 25.00,20.00,32.00,26.00,29.00,21.00 };
LinkList p
= L
;
for (int i
= 0;i
< 6;i
++) {
LinkList q
= new LNode
;
q
->num
= a
[i
];
q
->name
= b
[i
];
q
->price
= c
[i
];
q
->next
=NULL;
p
->next
=q
;
p
= q
;
}
}
void PrintList(LinkList
&L
) {
LinkList p
;
p
= L
->next
;
while(p
) {
cout
<< p
->num
<<" "<<p
->name
<< " "<<setiosflags(ios
::fixed
)<<setprecision(2)<<p
->price
<<endl
;
p
= p
->next
;
}
system("pause");
system("cls");
}
void NumLocate(LinkList
&L
) {
string NUM
;
int flag
= 0;
cout
<< "请输入您需要查找图书的编号" << endl
;
cin
>> NUM
;
LinkList p
= L
->next
;
while (p
) {
if (p
->num
== NUM
) {
cout
<< "查找成功,该图书信息为:" << endl
;
cout
<< p
->num
<< " " << p
->name
<< " " << setiosflags(ios
::fixed
) << setprecision(2) << p
->price
<< endl
;
flag
= 1;
}
p
= p
->next
;
}
if (flag
== 0)
cout
<< "查找失败" << endl
;
}
void NameLocate(LinkList
&L
) {
string Name
;
int flag
= 0;
cout
<< "请输入您需要查找图书的书名" << endl
;
cin
>> Name
;
LinkList p
= L
->next
;
while (p
) {
if (p
->name
== Name
) {
cout
<< "查找成功,该图书信息为:" << endl
;
cout
<< p
->num
<< " " << p
->name
<< " " << setiosflags(ios
::fixed
) << setprecision(2) << p
->price
<< endl
;
flag
= 1;
}
p
= p
->next
;
}
if (flag
== 0)
cout
<< "查找失败" << endl
;
}
void PriceLocate(LinkList
&L
) {
double PRICE
;
int flag
= 0;
cout
<< "请输入您需要查找图书的价格" << endl
;
cin
>> PRICE
;
LinkList p
= L
->next
;
while (p
) {
if (p
->price
== PRICE
) {
cout
<< "查找成功,该图书信息为:" << endl
;
cout
<< p
->num
<< " " << p
->name
<< " " << setiosflags(ios
::fixed
) << setprecision(2) << p
->price
<< endl
;
flag
= 1;
}
p
= p
->next
;
}
if (flag
== 0)
cout
<< "查找失败" << endl
;
}
void LocateList(LinkList
&L
) {
cout
<< "您要根据哪项信息查找图书" << endl
;
cout
<< "0.编号" << endl
;
cout
<< "1.书名" << endl
;
cout
<< "2.价格" << endl
;
int i
;
cin
>> i
;
switch (i
) {
case 0: {
NumLocate(L
);
break;
}
case 1: {
NameLocate(L
);
break;
}
case 2: {
PriceLocate(L
);
break;
}
default:
break;
}
system("pause");
system("cls");
}
void InsertList(LinkList
&L
) {
int i
,j
=0;
cout
<< "您要在第几个元素前添加新元素:" << endl
;
cin
>> i
;
LinkList p
= L
;
while (p
&& (j
< i
- 1)) {
p
= p
->next
;
j
++;
}
LinkList s
= new LNode
;
cout
<< "输入图书编号" << endl
;
cin
>> s
->num
;
cout
<< "输入图书书名" << endl
;
cin
>> s
->name
;
cout
<< "输入图书价格" << endl
;
cin
>> s
->price
;
s
->next
= p
->next
;
p
->next
= s
;
}
void DelList(LinkList
&L
) {
int i
, j
= 0;
cout
<< "您要删除第几个元素:" << endl
;
cin
>> i
;
LinkList p
= L
;
while (p
&& (j
< i
- 1)) {
p
= p
->next
;
j
++;
}
p
->next
= p
->next
->next
;
}
int main() {
LinkList L
;
int i
;
while (1) {
ShowMenu();
cout
<< "请输入您的操作" << endl
;
cin
>> i
;
switch (i
) {
case 0: {
InitList(L
);
PrintList(L
);
break;
}
case 1: {
LocateList(L
);
break;
}
case 2: {
InsertList(L
);
PrintList(L
);
break;
}
case 3: {
DelList(L
);
PrintList(L
);
break;
}
case 4: {
exit(0);
break;
}
}
}
}
建立一个长度为n的栈或队,输出该栈(队),并插入一个新元素x;然后再删除一个元素,并输出对应栈(队)。 我们作业只要求选其一,so另一个我就不写了,hhhhhh. 使用栈
#include<iostream>
#include<iomanip>
#include<string>
using namespace std
;
#define size 100
typedef struct {
string num
;
string name
;
double price
;
}Book
;
typedef struct {
Book
*base
, *top
;
}SqStack
;
void ShowMenu() {
cout
<< "*******欢迎光临太原理工大学图书管理系统*******" << endl
;
cout
<< "***************首次操作请先按0****************" << endl
;
cout
<< "***************0.显示原始图书表***************" << endl
;
cout
<< "***************1.添加元素*********************" << endl
;
cout
<< "***************2.删除元素*********************" << endl
;
cout
<< "***************3.退出系统*********************" << endl
;
}
void InitStack(SqStack
&S
) {
S
.base
=new Book
[size
];
S
.top
= S
.base
;
string a
[6] = { "9787302257646","9787302164340","9787302219972","9787302203513","978710827430","9787811234923" };
string b
[6] = { "程序设计基础","程序设计基础(第2版)","单片机技术及应用","单片机原理与应用技术","工业计算机控制技术——原理与应用","汇编语言程序设计教程" };
double c
[6] = { 25.00,20.00,32.00,26.00,29.00,21.00 };
for (int i
= 0;i
< 6;i
++) {
S
.top
->num
= a
[i
];
S
.top
->name
= b
[i
];
S
.top
->price
= c
[i
];
S
.top
++;
}
}
void PrintStack(SqStack
&S
) {
for (int i
= 0;i
< S
.top
- S
.base
;i
++) {
Book
*j
= S
.base
+ i
;
cout
<< j
->num
<< " " << j
->name
<< " "<< setiosflags(ios
::fixed
) << setprecision(2) << j
->price
<< endl
;
}
system("pause");
system("cls");
}
void InsertStack(SqStack
&S
) {
cout
<< "请输入书的编号:" << endl
;
cin
>> S
.top
->num
;
cout
<< "请输入书的书名:" << endl
;
cin
>> S
.top
->name
;
cout
<< "请输入书的价格:" << endl
;
cin
>> S
.top
->price
;
S
.top
++;
}
void DelStack(SqStack
&S
) {
S
.top
--;
}
int main() {
SqStack S
;
int i
;
while (1) {
ShowMenu();
cout
<< "请输入您的操作" << endl
;
cin
>> i
;
switch (i
) {
case 0: {
InitStack(S
);
PrintStack(S
);
break;
}
case 1: {
InsertStack(S
);
PrintStack(S
);
break;
}
case 2: {
DelStack(S
);
PrintStack(S
);
break;
}
case 3: {
exit(0);
}
default:
break;
}
}
}