吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1883|回复: 0
收起左侧

[其他原创] c 信息管理系统链表

[复制链接]
wsdmzz 发表于 2019-3-14 14:47
[C] 纯文本查看 复制代码
#include<stdio.h>
#include<malloc.h>
typedef struct student{
	int num;
	char name[20];
	float score;
	struct student *next;
}LinkList;

//创建链表并初始化
LinkList *creat(int n)
{
	int i;
	
	LinkList *head,*newer,*end;//头节点 新节点 尾节点
	head = (LinkList *)malloc(sizeof(LinkList));//给head分配地址
	end = head;
	for(i = 0;i < n;i++)
	{
		newer = (LinkList *)malloc(sizeof(LinkList));
		scanf("学号%d,姓名%s,成绩%f",newer->num,newer->name,newer->score);
		end->next = newer;
		end = newer;
	}
	end->next = NULL;//结束创建
	return head;
}

//头插入链表节点
void insert(LinkList *list, int n) 
{
	LinkList *t = list,*p;
	int i=0;
	while(i < n && t != NULL)//循环整个链表
	{
		t = t->next;
		i++;
	}
	if(t != NULL)
	{
		p = (LinkList *)malloc(sizeof(LinkList));
		printf("输入要插入的值:");
		scanf("%d,%s,%f",p->num,p->name,p->score);
		p->next = t->next;//填充p节点的指针域,也就是说把p的指针域指向t的下一个节点
		t->next = p;     //填充t节点的指针域,把t的指针域重新指向p
	}
	else
	{
		printf("节点不存在\n");
	}
}
//修改链表节点
void change(LinkList *list,int n) 
{
	LinkList *t = list;
	int i=0;
	while(i < n && t != NULL)//循环整个链表
	{
		t = t->next;
		i++;
	}
	if(t != NULL)
	{
		printf("输入要修改的值:");
		scanf("%d,%s,%f",t->num,t->name,t->score);
	}
	else
	{
		printf("节点不存在\n");
	}
}
//删除链表节点
void delet(LinkList *list, int n) 
{
	LinkList *t = list,*p;
	int i=0;
	while(i < n && t != NULL)//循环整个链表
	{
		t = t->next;
		i++;
	}
	if(t != NULL)
	{
		p->next = t->next;
		free(t);
	}
	else
	{
		printf("节点不存在\n");
	}
}
//打印链表
void display(LinkList *h)
{
	while (h->next != NULL) {

		h = h->next;

		printf("%d,%s,%f\n",h->num,h->name,h->score);

	}
}
//提供选项的菜单函数
void menu()           
{

	printf("***************************************************************\n");
	printf("* [0] 打印 [1] 插入   [2] 修改   [3]删除 \n");
	printf("***************************************************************\n");
}
int main(void)
{
	int n,x=1;
	LinkList *a;//定义结构体类型变量
	printf("输入链表节点的个数:");
	scanf("%d",&n);
	a=creat(n);
	

	while(x)
	{
		menu();
		printf("给出想要操作的序号:");
		scanf("%d",&x);

		switch(x)
		{
		case 0:
			display(a);
			break;
		case 1:
			insert(a,n);
			break;
		case 2:
			change(a,n);
			break;
		case 3:
			delet(a,n);
			break;
		default:
            printf("重新输入\n");
            break;

		}
	}
	return 0;
}

免费评分

参与人数 1吾爱币 +3 热心值 +1 收起 理由
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 05:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表