标题:哪位高手帮忙改改呀
只看楼主
fuchunsgj
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-6-18
 问题点数:0 回复次数:0 
哪位高手帮忙改改呀
#include<stdio.h>
#include<stdlib.h>
struct student
{
    int num[100];
    double score;
    struct student *next;
};
typedef struct student stud;
stud*create();
void print(stud *head);//显示链表中的数据
int insert(stud *head);//在链表中插入结点
int delete(stud*head);//删除链表中的结点
void cp(stud *head);//链表中的数据存盘
void dc(stud *head);//通过读出文件中的内容建立链表
void main()
{
  stud*head;
  head=create();
  print(head);
  insert(head);
   print(head);
   delete(head);
   print(head);
   cp(head);
   print(head);
   dc(head);
   print(head);
}
stud *create()//动态链表创建
{
    int n=0;
    stud *head,*p1,*p2;
    p1=(stud*)malloc(sizeof(stud));
    printf("please input data:");
    scanf("%d%lf",&p1->num,&p1->score);
    head=NULL;
    while(p1->num!=0)
    {
        ++n;
        if(n==1)
        {
            head=p1;
        }
        else
        {
            p2->next=p1;
        }
        p2=p1;
        p1=(stud*)malloc(sizeof(stud));
        printf("please input data:");
        scanf("%d%lf",&p1->num,&p1->score);
    }
    p2->next=NULL;
    free(p1);
    return head;
}

void print(stud*head)
{
    stud*p=head;
    while(p!=NULL)
    {
        printf("%d %lf\n",p->num,p->score);
        p=p->next;
    }
    printf("\n---------------------------------------\n");
}
/*int insert(stud **phead)
{
    stud*head=*phead,*p;
    p=(stud*)malloc(sizeof(stud));
    printf("num, score:\n");
    scanf("%s",p->num);
    scanf("%f",p->score);
    p=p->next=head;
    *phead=p;
}*/
int insert(stud *head)//在链表中插入结点
{
    stud *p=head;
    stud *s;
    int j=0,i,num;
    double score;
    printf("请输入第几个点插入(并输入插入者的学号和分数):");
    scanf("%d%d%lf",&i,&num,&score);
    while(p&&j<i-1)
    {
        p=p->next;
        ++j;
    }
    if(!p||j>i-1)
    {
        return 0;
    }
    s=(stud*)malloc(sizeof(stud));
    s->num=num;
    s->score=score;
    s->next=p->next;
    p->next=s;
    return 1;
}
int delete(stud*head)
{
    stud*p=head;
    stud*q;
    int j=0,i;
    printf("请输入第几个点删除:");
    scanf("%d",&i);
    //寻找第i个结点,并令p指向前结点
    while(p->next && j<i-1)
    {
        p=p->next;
        ++j;
    }
    if(!(p->next)||j>i-1)  // 删除位置不合理
    {
        return 0;
    }
    q=p->next;
    p->next=q->next;
    free(p);
    return 1;
}
void cp(stud *head)//链表中的数据存盘
{
{
    FILE *fp;
    int n=0;
    stud*p;
    p=head;
    fp=fopen("d:\\student.txt","w");
    while(p)
    {
        n++;
        p=p->next;
    }
    while(p!=NULL)
    {
        fwrite(p,sizeof(stud),1,fp);
         p=p->next;
    }
    fclose(fp);
}
   
}
void dc(stud *head)//通过读出文件中的内容建立链表
{

    FILE *fp;
    stud*p=head;
    fp=fopen("d:\\student.txt","r");
    while(p!=NULL)
    {
        fread(p,sizeof(stud),1,fp);
         p=p->next;
    }
    fclose(fp);
}
搜索更多相关主题的帖子: 改改 
2010-06-25 17:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-311255-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.477802 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved