📄 linklist.cpp
字号:
#include <iostream.h>
#include<iomanip.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct { //通讯录结点类型
char ID[9];
char MZ[9];
char XB[3];
char NL[3];
char ZY[20];
char JG[20];
}DataType;
typedef struct node {
DataType data;
struct node *next;
}ListNode;
typedef ListNode *LinkList;
LinkList first;
ListNode *p; //函数说明
int system();
//node *get_next(){return next;}
LinkList create(void);
void Insert(LinkList first,ListNode *p);
ListNode *Find(LinkList first);
void remove(LinkList first);
void Print(LinkList first);
LinkList create(void)
{
LinkList first=(ListNode *)malloc(sizeof(ListNode));//申请头结点
ListNode *link;
//int flag=0; //结束标志置0
link=first;
//while(flag!=1)
/* {
// cout<<"0.继续输入信息"<<endl;
// cout<<"1.返回菜单选择"<<endl;
// cout<<"请选择:";
// cin>>flag;
// if(!flag)
// {
p=(ListNode *)malloc(sizeof(ListNode));
cout<<"请输入学生学号: ";cin>>p->data.ID;cout<<endl;
cout<<"请输入学生名字: ";cin>>p->data.MZ;cout<<endl;
cout<<"请输入学生性别: ";cin>>p->data.XB;cout<<endl;
cout<<"请输入学生年龄: ";cin>>p->data.NL;cout<<endl;
cout<<"请输入学生专业: ";cin>>p->data.ZY;cout<<endl;
cout<<"请输入学生籍贯: ";cin>>p->data.JG;cout<<endl;
//cin>>p->data.ID>>p->data.MZ>>p->data.XB>>p->data.NL>>p->data.ZY>>p->data.JG;
*/ // link->next=p;
//link=p;
// }
//}
link->next=NULL;
return first;
}
void Insert(LinkList first,ListNode *p)
{
/* listnode *p=first;
int k=0;
while(p!=NULL && k<i-1) {p=p->link} */
ListNode *p1,*p2;
p1=first;
p2=p1->next;
while(p2!=NULL && strcmp(p2->data.ID,p->data.ID)<0)
{
p1=p2;
p2=p2->next; //指向下一个节点
}
p1->next=p; //插入P所指接点
p->next=p2;
//合表
}
ListNode *Find(LinkList first)
{
ListNode *p=first->next;
char ID[9];
cout<<"输入想要查找/删除学生的学号: ";
cin>>ID;
while(p!=NULL && strcmp(p->data.ID,ID)<0)
p=p->next;
if(p==NULL || strcmp(p->data.ID,ID)>0)
{
p=NULL;
cout<<"查无此人!"<<endl;
}
return p;
}
void remove(LinkList first)
{
ListNode *p,*q;
int flag;
p=Find(first);
if(p==NULL)
{ cout<<"空位置!无法删除!"<<endl;
return;
}
cout<<"1.确认删除!"<<endl;
cout<<"0.取消删除!"<<endl;
cout<<"确认删除?"<<endl;
cin>>flag;
if(flag==1)
{
q=first;
while(q!=NULL && q->next!=p)
q=q->next;
q->next=p->next;
cout<<p->data.MZ<<"同学的信息被删除成功!"<<endl;
free(p);
}
else
cout<<"取消删除!"<<endl;
}
void Print(LinkList first)
{
ListNode *p;
p=first->next;
if(p!=NULL)
cout<<setw(10)<<"学号"<<setw(10)<<"姓名"<<setw(10)<<"性别";
cout<<setw(10)<<"年龄"<<setw(15)<<"专业"<<setw(10)<<"籍贯"<<endl;
while(p!=NULL)
{
cout<<setw(10)<<p->data.ID<<setw(10)<<p->data.MZ<<setw(10)<<p->data.XB;
cout<<setw(10)<<p->data.NL<<setw(15)<<p->data.ZY<<setw(10)<<p->data.JG<<endl;
// cout<<"学号: "<<p->data.ID<<" 姓名: "<<p->data.MZ<<" 性别: "
// <<p->data.XB<<" 年龄: "<<p->data.NL<<" 专业: "<<p->data.ZY
// <<" 籍贯: "<<p->data.JG<<endl;
p=p->next;
}
}
void main()
{
for( ; ; )
{
int mm=system();
//cout<<"t="<<mm;
switch (mm)
{
case 1:
// p=(ListNode *)malloc(sizeof(ListNode));
// cout<<"p="<<p;
// cout<<" 输入学生信息"<<endl;
// cout<<"请输入学生学号: ";cin>>p->data.ID;cout<<endl;
// cout<<"请输入学生名字: ";cin>>p->data.MZ;cout<<endl;
// cout<<"请输入学生性别: ";cin>>p->data.XB;cout<<endl;
// cout<<"请输入学生年龄: ";cin>>p->data.NL;cout<<endl;
// cout<<"请输入学生专业: ";cin>>p->data.ZY;cout<<endl;
// cout<<"请输入学生籍贯: ";cin>>p->data.JG;cout<<endl;
first=create();
cout<<"链表建立成功!"<<endl;
break;
case 2:
cout<<"插入学生信息"<<endl;
p=(ListNode *)malloc(sizeof(ListNode));//申请新结点
// cout<<"p=??"<<p;
cout<<"请输入学生学号: ";cin>>p->data.ID;cout<<endl;
cout<<"请输入学生名字: ";cin>>p->data.MZ;cout<<endl;
cout<<"请输入学生性别: ";cin>>p->data.XB;cout<<endl;
cout<<"请输入学生年龄: ";cin>>p->data.NL;cout<<endl;
cout<<"请输入学生专业: ";cin>>p->data.ZY;cout<<endl;
cout<<"请输入学生籍贯: ";cin>>p->data.JG;cout<<endl;
Insert(first,p);
break;
case 3:
cout<<"查询学生信息"<<endl;
p=Find(first);
if(p!=NULL)
{
cout<<"学号: "<<p->data.ID<<"姓名: "<<p->data.MZ<<"性别: "<<p->data.XB
<<"年龄: "<<p->data.NL<<"专业: "<<p->data.ZY<<"籍贯: "<<p->data.JG<<endl;
}
else
cout<<"查无此人!"<<endl;
break;
case 4:
cout<<"删除学生信息"<<endl;
remove(first);
break;
case 5:
cout<<"输出学生信息"<<endl;
Print(first);
break;
case 0:
cout<<"退出!"<<endl;
return;
}
}
}
int system()
{
int t;
cout<<setw(20)<<' '<<"※※※※※※※※※※※※※※※※※※※※※※※"<<endl;
cout<<setw(20)<<' '<<"※≮学≯ ≮生≯ ≮信≯ ≮息≯ ≮管≯ ≮理≯ ※"<<endl;
cout<<setw(20)<<' '<<"※≡☆≡ Student Information System ≡☆≡※"<<endl;
cout<<setw(20)<<' '<<"※※※※※※※※※※※※※※※※※※※※※※※"<<endl;
cout<<setw(20)<<' '<<"※ ①--〖 ⊕请先建立链表 ⊕〗 ※"<<endl;
cout<<setw(20)<<' '<<"※ ②--〖 ⊕插入学生信息 ⊕〗 ※"<<endl;
cout<<setw(20)<<' '<<"※ ③--〖 ⊕查询学生信息 ⊕〗 ※"<<endl;
cout<<setw(20)<<' '<<"※ ④--〖 ⊕删除学生信息 ⊕〗 ※"<<endl;
cout<<setw(20)<<' '<<"※ ⑤--〖 ⊕输出学生信息 ⊕〗 ※"<<endl;
cout<<setw(20)<<' '<<"※ ◎--〖 ⊕退出⊕ 〗 ※"<<endl;
cout<<setw(20)<<' '<<"※※※※※※※※※※※※※※※※※※※※※※※"<<endl;
for( ; ; )
{
cout<<"请从0-5中选择一项:"<<endl;
cin>>t;
break;
}
return t;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -