📄 link.cpp
字号:
#include "stdio.h"
#include "malloc.h"
#include "string.h"
#include "struct_stu.h"
#include "def.h"
typedef struct stu ElementData; //typedef定义
typedef struct stu* LinkList; //typedef定义
/***************************************************************************
//测试用的主函数
void main()
{
LinkList InsList(); //链表初始化函数
void Start_List(LinkList L,ElementData data,int *Number); //链表的拓补接口,一次拓补一位数据元素
int Del_List_Num(LinkList L,char* num,int *Number); //链表节点删除函数(按学号删除)
int Del_List_Name(LinkList L,char* name,int *Number); //链表节点删除函数(按姓名删除)
LinkList Fine_List_Num(LinkList L,char* num); //链表节点查找函数(按学号查找)
LinkList Fine_List_Name(LinkList L,char* name); //链表节点查找函数(按姓名查找)
LinkList L,L1;
ElementData data;
int Number;
printf("输入数据\n");
scanf("%s",data.num);
scanf("%s",data.name);
scanf("%s",data.yuwen);
scanf("%s",data.shuxue);
scanf("%s",data.englise);
scanf("%s",data.cplus);
L=InsList(); //初始化链表
Start_List(L,data,&Number); //进行链表扩充
printf("输入数据\n");
scanf("%s",data.num);
scanf("%s",data.name);
scanf("%s",data.yuwen);
scanf("%s",data.shuxue);
scanf("%s",data.englise);
scanf("%s",data.cplus);
Start_List(L,data,&Number); //进行链表二次扩充
printf("输入数据\n");
scanf("%s",data.num);
scanf("%s",data.name);
scanf("%s",data.yuwen);
scanf("%s",data.shuxue);
scanf("%s",data.englise);
scanf("%s",data.cplus);
Start_List(L,data,&Number); //进行链表三次扩充
L1=Fine_List_Num(L,"001");
//编程检查行
printf("%s%s%s%s%s%s",L1->num,L1->name,L1->yuwen,L1->shuxue,L1->englise,L1->cplus);
}
************************************************************************/
/*链表初始化函数*/
LinkList L,L1;
LinkList InsList()
{
LinkList L;
L=(ElementData *)malloc(sizeof(ElementData));
if(L==NULL)
1+1;/*在这里添加链表创建失败的函数,对应代号:ERROR_5*/
L->next =NULL;
return L;
}
/*..............创链操作,一次调用创建一个元素结点,并链接............*/
//头插法
void Start_List(LinkList L,ElementData data,int *Number)
{
ElementData *p,*q;
p = (ElementData *)malloc(sizeof(ElementData));
if(p==NULL)
;/*在这里添加空间申请失败的函数,对应代号:ERROR_5*/
strcpy(p->num , data.num);
strcpy(p->name , data.name);
strcpy(p->yuwen , data.yuwen);
strcpy(p->shuxue , data.shuxue);
strcpy(p->englise , data.englise);
strcpy(p->cplus , data.cplus);
//编程检测行
/*printf("%s%s%s%s%s%s\n",p->num,p->name,p->yuwen,p->shuxue,p->englise,p->cplus); */
p->next = L->next;
L->next = p;
*Number++;
}
/*链表删除函数(以学号为准则的删除规则)*/
int Del_List_Num(LinkList L,char* num,int *Number)
{
ElementData *p,*q;
int flag=0;
p=L->next;
q=L;
while(p!=NULL) {
if(strcmp(p->num,num)==0){
flag=1;
break;
}/*if(strcmp(p->num,num)==0)*/
else{
p=p->next;
q=q->next;
}
}/*while(p!=NULL)*/
if(flag){
q->next=p->next;
p->next=NULL;
free(p);
*Number--;
return OK;
} /*if(flag)*/
else
return ERROR;
}
/*链表删除函数(以姓名为准则的删除规则)*/
int Del_List_Name(LinkList L,char* name,int *Number)
{
ElementData *p,*q;
int flag=0;
p=L->next;
q=L;
while(p!=NULL) {
if((strcmp(p->name,name)) && (strlen(name) == strlen(p->name))){
flag=1;
break;
}/*if(strcmp(p->num,num)==0)*/
else{
p=p->next;
q=q->next;
}
}/*while(p!=NULL)*/
if(flag){
q->next=p->next;
p->next=NULL;
free(p);
*Number--;
return OK;
} /*if(flag)*/
else
return ERROR;
}
/*查找模块(按学号查找)*/
LinkList Fine_List_Num(LinkList L,char* num)
{
ElementData *L1; //返回的结构体元素指针
int flag=0;
L1 = L;
while(L1->next != NULL) {
L1 = L1->next;
if((strcmp(L1->num,num)==0) && (strlen(num) == strlen(L1->num))) {
flag=1;
break;
} /*if(strcmp(L1->num,num))*/
else {
continue;
}/*else if(strcmp(L1->num,num))*/
}/*while(L1!=NULL)*/
if(flag) {
return L1;
}/*if(flag)*/
else{
return NULL;}
}
/*查找模块(按姓名查找)*/
LinkList Fine_List_Name(LinkList L,char* name)
{
ElementData *L1; //返回的结构体元素指针
int flag=0;
L1 = L->next;
while(L1!=NULL) {
if((strcmp(L1->name,name)==0) && (strlen(name) == strlen(L1->name))) {
flag=1;
break;
} /*if(strcmp(L1->num,num))*/
else {
L1=L1->next;
}/*else if(strcmp(L1->num,num))*/
}/*while(L1!=NULL)*/
if(flag) {
return L1;
}/*if(flag)*/
else{
return NULL;
}/*else if(flag)*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -