大佬帮忙看一下

吃腻芒果冰 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;
}

感激不尽 !
...全文
524 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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
  • 打赏
  • 举报
回复
什么问题?问题不是靠猜出来的,建议详细说明一下你的问题。

70,023

社区成员

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

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