大佬帮忙看一下

吃腻芒果冰 2018-03-09 02:06:07
#include <stdio.h>
#include <string.h>
#include <malloc.h>
void Gain(int t);
void Insert();
void Del();
void Change();
void Seek();
void All();
int List();
typedef struct dzzz{
int num;
char name[12];
int zw;
}DATA;
struct node{
DATA data;
struct node *next;
}*head,*tail;
int main(){
int t,x;
printf("请输入学生数目:\n");
scanf("%d",&t);
Gain(t);
while(1){
x=List();
if(x==1)
Insert();
else if(x==2)
Seek();
else if(x==3)
Del();
else if(x==4)
Change();
else if(x==5)
All();
else
break;
}
return 0;
}
void Gain(int t){
head=(struct node*)malloc(sizeof(struct node));
tail =head;
head->next=NULL;
while(t--){
tail=tail->next;
printf("第%d名同学的学号 名字 座号为:\n");
scanf("%d%s%d",&tail->data.num,tail->data.name,&tail->data.zw);
}
tail->next=NULL;
tail=head;
}
void Insert(){
struct node *s,*p;
int j=0;
p=head;
printf("请输入学号 姓名 座号:\n");
scanf("%d%s%d",&s->data.num,s->data.name,&s->data.zw);
while(j<s->data.num-1&&p!=NULL){
p=p->next;
j++;
}
if(p==NULL){
printf("无法插入数据!\n");
}else{
s->next=p->next;
p->next=s;
printf("数据插入成功!\n");
}
}
void Del(){
struct node *h,*p;
int j=0;
printf("请输入要删除的数据:\n");
p=head;
scanf("%d%s%d",&h->data.num,h->data.name,&h->data.zw);
while(j<h->data.num-1&&p!=NULL){
p=p->next;
j++;
}
if(h==NULL)
printf("无法删除数据!\n");
else
p->next=p->next->next;

}
void Change(){
struct node *p,*y;
int t=0;
p=head;
printf("请输入您要更改的信息:学号,姓名,座号\n");
scanf("%d%s%d",&y->data.num,y->data.name,&y->data.zw);
while(t<y->data.num-1&&p!=NULL){
p=p->next;
t++;
}
y->next=p->next->next;
p->next=y;
printf("修改成功!\n");
}
void Seek(){
int x;
char t;
int numm;
char xmm[12];
struct node *p;
p=head->next;
printf("请输入1.姓名或2.学号:\n");
while(1){
scanf("%d",&x);
if(x==1){
scanf("%s",xmm);
while(strcmp(xmm,p->data.name)!=0){
p=p->next;
}
printf("%d,%s,%d\n",p->data.num,p->data.name,p->data.zw);
}else if(x==2){
scanf("%d",&numm);
while(numm!=p->data.num){
p=p->next;
}
printf("%d,%s,%d\n",p->data.num,p->data.name,p->data.zw);
}else
printf("输入错误!\n");
printf("结束输入时请输入:N/n\n");
scanf("%c",&t);
if(t=='n'||t=='N')
break;
}
}
void All(){
struct node *p;
p=head;
while(p!=NULL){
p=p->next;
printf("学号:%d 姓名:%s 座号:%d\n",p->data.num,p->data.name,p->data.zw);
}
}
int List(){
int t;
printf(" --------------------------|----------------|--------------------------\n");
printf(" --------------------------|学生宿舍管理系统|--------------------------\n");
printf(" --------------------------|----------------|--------------------------\n");
printf(" ----------------------------1.插入学生信息----------------------------\n");
printf(" ----------------------------2.查询学生信息----------------------------\n");
printf(" ----------------------------3.删除学生信息----------------------------\n");
printf(" ----------------------------4.更改学生信息----------------------------\n");
printf(" ----------------------------5.查看全部信息----------------------------\n");
printf("请输入序号:\n");
while(1){
scanf("%d",&t);
if(t>6||t<1)
printf("请重新输入\n");
else
break;
}
return t;
}

感激不尽 !
...全文
586 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-03-09
  • 打赏
  • 举报
回复
数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633
自信男孩 2018-03-09
  • 打赏
  • 举报
回复
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

typedef struct{
    int num;
    char name[10];
    int zw;
}DATATYPE;

typedef struct node{
    DATATYPE data;
    struct node *next;
}NODE;

int FullList();
void SeekList(NODE* head);
void InsertList(NODE* head);
void DeleteList(NODE* head);
void ChangeList(NODE* head);
void AllList(NODE* head);

int main()
{
    NODE *head,*p,*s;
    int tm;
    head=(NODE*)malloc(sizeof(NODE));
    head->next=NULL;
    s = head;
    printf("请输入学生人数:\n");
    scanf("%d", &tm);
    while(tm--){
        printf("请依次输入 学号 姓名 座号\n");
        p=(NODE*)malloc(sizeof(NODE));
        scanf("%d%s%d",&p->data.num,p->data.name,&p->data.zw);
        s->next = p;
        s = p;
    }
    p->next=NULL;

    while(1){
        switch(FullList()){
            case 1:
                InsertList(head);
                break;
            case 2:
                SeekList(head);
                break;
            case 3:
                DeleteList(head);
                break;
            case 4:
                ChangeList(head);
                break;
            case 5:
                AllList(head);
                break;
            default:
                break;
        }
    }
    return 0;
}
int FullList(){
    int t;
    printf("     --------------------------|----------------|--------------------------\n");
    printf("     --------------------------|学生宿舍管理系统|--------------------------\n");
    printf("     --------------------------|----------------|--------------------------\n");
    printf("     ----------------------------1.插入学生信息----------------------------\n");
    printf("     ----------------------------2.查询学生信息----------------------------\n");
    printf("     ----------------------------3.删除学生信息----------------------------\n");
    printf("     ----------------------------4.更改学生信息----------------------------\n");
    printf("     ----------------------------5.查看全部信息----------------------------\n");
    printf("请输入序号:\n");
    while(1){
        scanf("%d", &t);
        if(t >= 6||t<1)
            printf("请重新输入\n");
        else
            break;
    }
    return t;
}
void SeekList(NODE* head){
    int x;
    char t;
    int numm;
    char xmm[12];
    NODE *p;
    p=head->next;
    printf("请输入1.姓名或2.学号:\n");
    while(1){
        scanf("%d",&x);
        if(x==1){
            scanf("%s",xmm);
            while(strcmp(xmm,p->data.name)!=0){
                p=p->next;
            }
            printf("%d,%s,%d\n",p->data.num,p->data.name,p->data.zw);
        }else if(x==2){
            scanf("%d",&numm);
            while(numm!=p->data.num){
                p=p->next;
            }
            printf("%d,%s,%d\n",p->data.num,p->data.name,p->data.zw);
        }else
            printf("输入错误!\n");
        printf("结束输入时请输入:N/n\n");
        scanf("%c",&t);
        if(t=='n'||t=='N')
            break;
    }
}
void InsertList(NODE *head){
    NODE *s,*p;
    int j=0;
    p = head;
    s = (NODE *)malloc(sizeof(NODE));
    if (!s)
        exit(0);
    printf("请输入学号 姓名 座号:\n");
    scanf("%d%s%d",&s->data.num,s->data.name,&s->data.zw);
    while(j<s->data.num-1 && p){
        p = p->next;
        j++;
    }
    if(p==NULL){
        printf("无法插入数据!\n");
    }else{
        s->next = p->next;
        p->next = s;
        printf("数据插入成功!\n");
    }
}

void DeleteList(NODE* head)
{
    NODE *p, *s;
    int num;

    printf("请输入要删除的数据(学号):\n");
    s = head;
    p = head->next;
    scanf("%d",&num);

    while (p && num != p->data.num) {
        p = p->next;
        s = s->next;
    }
    if (!p) {
        printf("无法删除数据!\n");
    } else {
        s->next = p->next;
        free(p);
    }
    /*
    while(j<h.data.num-1&&p!=NULL){
        p = p->next;
        j++;
    }
    if(h==NULL)
        printf("无法删除数据!\n");
    else
        p->next=p->next->next;
    */
}

void AllList(NODE* head){

    NODE *p;
    p=head->next;
    while(p) {
        printf("学号:%d 姓名:%s 座号:%d\n",p->data.num,p->data.name,p->data.zw);
        p = p->next;
    }
}
void ChangeList(NODE* head)
{
    NODE *p;
    DATATYPE y;

    p = head->next;
    printf("请输入您要更改的信息:学号,姓名,座号\n");
    scanf("%d%s%d",&y.num,y.name,&y.zw);

    while (p && p->data.num != y.num) {
        p = p->next;
    }
    if (!p) {
        printf("没有找到!\n");
    } else {
        memcpy(&p->data, &y, sizeof(DATATYPE));
    }
    /*
    while(t<y->data.num-1&&p!=NULL){
        p=p->next;
        t++;
    }
    y->next=p->next->next;
    p->next=y;
    */
    printf("修改成功!\n");
}
参考一下吧
自信男孩 2018-03-09
  • 打赏
  • 举报
回复
什么问题?问题不是靠猜出来的,建议详细说明一下你的问题。
内容概要:本文围绕超导磁能储存系统(SMES)的建模与仿真展开,基于Simulink平台构建系统级动态仿真模型,涵盖超导线圈、功率转换系统(PCS)以及核心控制策略等关键模块。研究重点在于分析SMES在电网中实现快速能量存储与释放的能力,验证其在提升电力系统稳定性、抑制功率波动方面的有效性,尤其针对新能源发电带来的间歇性与波动性问题提供了有效的解决方案。通过仿真手段深入探讨系统的动态响应特性,为优化控制算法的设计与应用提供可靠的技术支撑。; 适合人群:适用于具备电力系统、自动控制理论或能源存储技术背景,熟悉Simulink仿真环境的科研人员、工程技术人员及研究生;同时适合有志于开展新型储能技术仿真研究的高年级本科生参考学习。; 使用场景及目标:①深入理解超导磁能储存系统的基本结构、工作原理及其在电力系统中的应用场景;②掌握在Simulink中搭建复杂电力电子与控制系统联合仿真模型的方法;③研究SMES在电网调频、电压支撑、瞬时功率补偿等典型工况下的动态性能表现;④为后续先进控制策略(如PID、模糊控制、现代控制理论等)的优化设计与验证提供仿真试验平台。; 阅读建议:建议读者结合文中模型逐步动手搭建仿真系统,重点关注各功能模块的参数设置与信号接口匹配,配合具体案例进行仿真调试,深入理解控制逻辑与系统动态行为之间的内在联系,并可进一步拓展至与其他储能形式(如锂电池、飞轮储能)的性能对比研究,以深化对不同类型储能技术特点的认知。
内容概要:本文围绕“考虑火-储联合调频(火电机组-混合储能)的协同控制策略”展开研究,提出一种基于Matlab仿真的协同控制方法,旨在提升电力系统频率调节的快速性与稳定性。通过构建火电机组与混合储能(如蓄电池、飞轮等)的联合调频模型,设计合理的功率分配机制与控制策略,充分发挥火电的持续调节能力与储能的快速响应优势,有效应对电网负荷波动与频率偏差。文中结合改进信号分解算法(如ICEEMDAN)与优化算法(如GWO),实现对调频信号的精准分频与储能单元的优化调度,提高系统整体调频效率与经济性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事新能源并网、电力系统稳定控制、储能技术应用等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于研究火电机组与混合储能在电网一次调频、二次调频中的协同作用机制;②为实际电力系统中储能配置与调频控制策略设计提供仿真验证平台与理论支持;③支撑相关课题研究、学术论文撰写及工程项目前期论证。; 阅读建议:建议结合Matlab代码深入理解控制算法实现细节,重点关注功率分配逻辑、信号分解过程与优化算法参数设置,并可通过修改系统参数进行对比仿真,以加深对协同控制效果的认识。

70,038

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧