模拟链表

include <stdio.h>

include <malloc.h>

include <stdlib.h>

define LEN sizeof(struct student) // student结构的大小

struct student *creat(); //创建链表
void print(struct student *head); //打印链表

struct student
{
int num;
float score;
struct student *next;
};

int n; //全局变量,用来记录存放了多少数据。

void main()
{
struct student *stu;

  stu = creat();
  print( stu );

  printf("\n\n");
  system("pause");

}

struct student *creat()
{
struct student *head;
struct student *p1, *p2;

  p1 = p2 = (struct student *)malloc(LEN);  // LEN是student结构的大小

  printf("Please enter the num :");
  scanf("%d", &p1->num);
  printf("Please enter the score :");
  scanf("%f", &p1->score);

  head = NULL;     
  n = 0;    
  
  while( 0 != p1->num )
  {
        n++;
        if( 1 == n )
        {
              head = p1;                 
        }
        else
        {
              p2->next = p1;
        }

        p2 = p1;

        p1 = (struct student *)malloc(LEN);

        printf("\nPlease enter the num :");
        scanf("%d", &p1->num);
        printf("Please enter the score :");
        scanf("%f", &p1->score);
  }

  p2->next = NULL;

  return head;

}

void print(struct student *head)
{
struct student *p;
printf("\nThere are %d records!\n\n", n);

  p = head;
  if( NULL != head )
  {
        do
        {
              printf("学号为 %d 的成绩是: %f\n", p->num, p->score);
              p = p->next;
        }while( NULL != p );
  }

}

posted on 2015-06-08 23:15  木屐  阅读(177)  评论(0编辑  收藏  举报

导航