⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 link.cpp

📁 学生信息管理系统
💻 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 + -