链表(c语言实现)--------------小练习

 

 1 #include <stdio.h>

 2 #include <stdlib.h>

 3 #include <string.h>

 4 

 5 #define MAX_SIZE    100

 6 #define MIN_SIZE    32

 7 

 8 struct role

 9 {

10     int number;

11     char name[MAX_SIZE];

12     char sex[MIN_SIZE];

13     int age;

14     struct role *next;

15 };

16 

17 struct role *creat()

18 {

19     struct role *p = NULL;

20     struct role *head = NULL;

21     struct role *tail = NULL;

22 

23     p = (struct role *)malloc(sizeof(struct role));

24     printf(" 请输入编号,按0即退出\n");

25     printf("编号->");

26     scanf("%d", &(p->number));

27 

28     if (p->number == 0)

29         return head;

30 

31     while (p->number != 0)

32     {

33         printf("姓名->");

34         scanf("%s", p->name);

35         printf("性别->");

36         scanf("%s", p->sex);

37         printf("年龄->");

38         scanf("%d", &(p->age));

39 

40         if (head == NULL)

41         {

42             head = p;

43             tail = p;

44         }

45         else

46         {

47             tail->next = p;

48             tail = p;

49         }

50 

51     p = (struct role *)malloc(sizeof(struct role));

52     printf("请输入编号,按0即退出\n");

53     printf("编号->");

54     scanf("%d", &(p->number));

55     }

56     tail->next = NULL;

57     free(p);

58     return head;

59 }

60 

61 void display(struct role *head)

62 {

63     struct role *p = head;

64     printf("编号        姓名        性别        年龄\n");

65     while (p != NULL)

66     {

67 

68         printf("%-16d%-16s%-16s%-16d\n",

69             p->number, p->name, p->sex, p->age);

70         p = p->next;

71     }

72 }

73 

74 int main(void)

75 {

76     struct role *head = creat();

77     display(head);

78     return 0;

79 }
View Code

 

需要改进的还很多.

这仅仅是练习~~~~

数据结构,我来了.加油!!!

 

小小的修改下...(其实就是free几下...咳咳..新人,,见笑了...)

 1 #include <stdio.h>

 2 #include <stdlib.h>

 3 

 4 #define MAX_SIZE    50

 5 #define MIN_SIZE    32

 6 

 7 struct role

 8 {

 9     int number;

10     char name[MAX_SIZE];

11     char sex[MIN_SIZE];

12     char address[MAX_SIZE];

13     int age;

14     struct role *next;

15 };

16 

17 struct role *creat()

18 {

19     struct role *head = NULL;

20     struct role *p = NULL;

21     struct role *tail = NULL;

22 

23     p = (struct role *)malloc(sizeof(struct role));

24     printf("请输入编号,按0退出\n");

25     printf("编号->");

26     scanf("%d", &(p->number));

27 

28     if (0 == p->number)

29     {

30         free(p);

31         return 0;

32     }

33 

34     while (0 != p->number)

35     {

36         printf("姓名->");

37         scanf("%s", p->name);

38 

39         printf("性别->");

40         scanf("%s", p->sex);

41 

42         printf("地址->");

43         scanf("%s", p->address);

44 

45         printf("年龄->");

46         scanf("%d", &(p->age));

47 

48         if (NULL == head)

49         {

50             head = p;

51             tail = p;

52         }

53         else

54         {

55             tail->next = p;

56             tail = p;

57         }

58         p = (struct role *)malloc(sizeof(struct role));

59         printf("请输入编号,按0退出\n");

60         printf("编号->");

61         scanf("%d", &(p->number));

62     }

63     tail->next = NULL;

64     free(p);

65     return head;

66 }

67 

68 void display(struct role *head)

69 {

70     struct role *p = NULL;

71     p = head;

72 

73     printf("编号        姓名        性别        住址        年龄\n");

74     while (NULL != p)

75     {

76         printf("%-16d%-16s%-16s%-16s%-16d",

77             p->number, p->name, p->sex, p->address, p->age);

78         p = p->next;

79     }

80 }

81 

82 int main(void)

83 {

84     struct role *head = NULL;

85     head = creat();

86     display(head);

87     return 0;

88 }
View Code

 最后.因为是练习,所以也没想用多文件...呼..不过这样看起来确实很乱...O.O

你可能感兴趣的:(C语言)