链表的相关操作查找插入删除(c++ 数据结构)
2010-10-07 19:46
633 查看
#include <iostream>
#include <iomanip>
#include<string>
using namespace std;
typedef struct
{char name[20];
int num;
float score[3];
}stu;
int main()
{void intput(stu array[],int n);
void display(stu array[],int n);
void locate(stu array[],int k);
void insert(stu array[],stu m,int n,int f);
void dele(stu array[],int m,int n);
cout<<"请按下列提示进行操作"<<endl;
cout<<"1"<<"查找操作"<<" "<<"2"<<"插入操作"<<endl;
cout<<"3"<<"删除操作"<<" "<<endl;
cout<<"请输入要输入的学生人数n:";
int n,m,k,j,i;
stu a[10];
cin>>n;
intput(a,n);
cout<<endl<<endl<<endl;
display(a,n);
cout<<endl;
for(int q=0;q<3;q++)
{
cout<<"................选择你想进行的操作.................."<<endl;
cin>>m;
if(m==1)
{ cout<<"输入你想查找的学号:"<<endl;
cin>>k;
locate(a,k);
cout<<"是否继续操作(Y/N)?"<<endl;
char l;
cin>>l;
if(l=='Y')
continue;
else
break;}
else if(m==2)
{cout<<"输入你想插入的位置:"<<endl;
cin>>j;
stu m;
cout<<"你想插入的学生信息:"<<endl;
cin>>m.name>>m.num>>m.score[0]>>m.score[1]>>m.score[2];
insert(a,m,j,n);
cout<<endl<<endl;
cout<<"插入后的信息为:"<<endl;
display(a,n+1);
cout<<"是否继续操作(Y/N)?"<<endl;
char l;
cin>>l;
if(l=='Y')
continue;
else
break;}
else
{cout<<"输入你想删除的位置:"<<endl;
cin>>i;
dele(a,i,n);
display(a,n-1);
cout<<"是否继续操作(Y/N)?"<<endl;
char l;
cin>>l;
if(l=='Y')
continue;
else
break;}
}
return 0;
}
/*输入函数*/
void intput(stu array[],int n)
{cout<<"请输入相应的学生的成绩信息:"<<endl;
for(int i=0;i<n;i++)
{cin>>array[i].name;
cin>>array[i].num;
cin>>array[i].score[0];
cin>>array[i].score[1];
cin>>array[i].score[2];}
}
/*输出函数*/
void display(stu array[], int n)
{for(int i=0;i<n;i++)
{cout<<array[i].name<<" "<<array[i].num<<" ";
cout<<array[i].score[0];
cout<<" "<<array[i].score[1]<<" ";
cout<<array[i].score[2]<<endl;}
}
/*查找函数*/
void locate(stu array[],int k)
{int i=0;
if(k<0||k>10)
cout<<"你的输入有误"<<endl;
while(array[i].num!=k)
i++;
cout<<array[i].name<<" ";
cout<<array[i].num<<" ";
cout<<array[i].score[0]<<" ";
cout<<array[i].score[1]<<" ";
cout<<array[i].score[2]<<" ";
cout<<endl;
}
/*插入函数*/
void insert(stu array[],stu m,int n,int f)
{
for(int i=f;i>n;i--)
{strcpy(array[i].name,array[i-1].name);
array[i].num=array[i-1].num;
array[i].score[0]=array[i-1].score[0];
array[i].score[1]=array[i-1].score[1];
array[i].score[2]=array[i-1].score[2];
}
strcpy(array
.name,m.name);
array
.num=m.num;
array
.score[0]=m.score[0];
array
.score[1]=m.score[1];
array
.score[2]=m.score[2];
}
/*删除函数*/
void dele(stu array[],int m,int n)
{for(int i=m;i<n;i++)
{strcpy(array[i-1].name,array[i].name);
array[i-1].num=array[i].num;
array[i-1].score[0]=array[i].score[0];
array[i-1].score[1]=array[i].score[1];
array[i-1].score[2]=array[i].score[2];
}
}
#include <iomanip>
#include<string>
using namespace std;
typedef struct
{char name[20];
int num;
float score[3];
}stu;
int main()
{void intput(stu array[],int n);
void display(stu array[],int n);
void locate(stu array[],int k);
void insert(stu array[],stu m,int n,int f);
void dele(stu array[],int m,int n);
cout<<"请按下列提示进行操作"<<endl;
cout<<"1"<<"查找操作"<<" "<<"2"<<"插入操作"<<endl;
cout<<"3"<<"删除操作"<<" "<<endl;
cout<<"请输入要输入的学生人数n:";
int n,m,k,j,i;
stu a[10];
cin>>n;
intput(a,n);
cout<<endl<<endl<<endl;
display(a,n);
cout<<endl;
for(int q=0;q<3;q++)
{
cout<<"................选择你想进行的操作.................."<<endl;
cin>>m;
if(m==1)
{ cout<<"输入你想查找的学号:"<<endl;
cin>>k;
locate(a,k);
cout<<"是否继续操作(Y/N)?"<<endl;
char l;
cin>>l;
if(l=='Y')
continue;
else
break;}
else if(m==2)
{cout<<"输入你想插入的位置:"<<endl;
cin>>j;
stu m;
cout<<"你想插入的学生信息:"<<endl;
cin>>m.name>>m.num>>m.score[0]>>m.score[1]>>m.score[2];
insert(a,m,j,n);
cout<<endl<<endl;
cout<<"插入后的信息为:"<<endl;
display(a,n+1);
cout<<"是否继续操作(Y/N)?"<<endl;
char l;
cin>>l;
if(l=='Y')
continue;
else
break;}
else
{cout<<"输入你想删除的位置:"<<endl;
cin>>i;
dele(a,i,n);
display(a,n-1);
cout<<"是否继续操作(Y/N)?"<<endl;
char l;
cin>>l;
if(l=='Y')
continue;
else
break;}
}
return 0;
}
/*输入函数*/
void intput(stu array[],int n)
{cout<<"请输入相应的学生的成绩信息:"<<endl;
for(int i=0;i<n;i++)
{cin>>array[i].name;
cin>>array[i].num;
cin>>array[i].score[0];
cin>>array[i].score[1];
cin>>array[i].score[2];}
}
/*输出函数*/
void display(stu array[], int n)
{for(int i=0;i<n;i++)
{cout<<array[i].name<<" "<<array[i].num<<" ";
cout<<array[i].score[0];
cout<<" "<<array[i].score[1]<<" ";
cout<<array[i].score[2]<<endl;}
}
/*查找函数*/
void locate(stu array[],int k)
{int i=0;
if(k<0||k>10)
cout<<"你的输入有误"<<endl;
while(array[i].num!=k)
i++;
cout<<array[i].name<<" ";
cout<<array[i].num<<" ";
cout<<array[i].score[0]<<" ";
cout<<array[i].score[1]<<" ";
cout<<array[i].score[2]<<" ";
cout<<endl;
}
/*插入函数*/
void insert(stu array[],stu m,int n,int f)
{
for(int i=f;i>n;i--)
{strcpy(array[i].name,array[i-1].name);
array[i].num=array[i-1].num;
array[i].score[0]=array[i-1].score[0];
array[i].score[1]=array[i-1].score[1];
array[i].score[2]=array[i-1].score[2];
}
strcpy(array
.name,m.name);
array
.num=m.num;
array
.score[0]=m.score[0];
array
.score[1]=m.score[1];
array
.score[2]=m.score[2];
}
/*删除函数*/
void dele(stu array[],int m,int n)
{for(int i=m;i<n;i++)
{strcpy(array[i-1].name,array[i].name);
array[i-1].num=array[i].num;
array[i-1].score[0]=array[i].score[0];
array[i-1].score[1]=array[i].score[1];
array[i-1].score[2]=array[i].score[2];
}
}
相关文章推荐
- C++链表的创建、插入、删除、查找、合并、排序、修改等操作的实现
- 单链表相关操作之C语言实现:插入,删除,倒转,复制,查找。。。
- 数据结构之链表操作,创建,插入,删除,查找。
- (C++版)链表(一)——实现单向链表创建、插入、删除等相关操作
- c++ 实现双向链表构造函数,拷贝构造函数,析构函数,输出操作符重载,赋值操作符重载,头插尾插,头删尾删,任意位置插入,任意位置删除,查找等
- 单向链表的操作:创建,删除,插入,销毁,查找
- c++实现数据结构链表的插入 删除 倒置 取值(vs测试可以运行)
- 单链表的插入删除操作(c++实现)
- 单链表建立,插入,删除,查找,遍历操作
- (C++版)链表(二)——实现单项循环链表创建、插入、删除等操作
- 【数据结构】用C++实现双循环链表的各种操作(包括头删,尾删,插入,逆序,摧毁,清空等等)
- 数据结构之简单链表(头部插入数据,查找,删除指定数据)
- C++ 数据结构的单链表的建立,插入,删除操作
- (C++版)链表(四)——实现双向循环链表创建、插入、删除等简单操作
- 链表的操作增加、插入、删除、查找、计算表长
- 链表的基本操作(C语言版):建立,插入,删除,查找,输出
- 单链表建立,插入,删除,查找,遍历操作
- 数据结构实践---单链表的初始化,建立,插入,查找,删除。
- 单向链表的相关操作(创建,遍历,插入,删除,逆置)
- 【数据结构】二叉搜索树的插入,删除,查找等基本操作的实现