自引用结构--之创建双向遍历的链表

代码:

 1 //This is c program code!                                                                                           
 2 /* *=+=+=+=+* *** *=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
 3   * 文档信息: *** :~/WORKM/stutyCode/cCode/recipesProblemSolution/chapter07/test707.c
 4   * 版权声明: *** :(魎魍魅魑)MIT
 5   * 联络信箱: *** :guochaoxxl@163.com
 6   * 创建时间: *** :2020年11月28日的下午09:53
 7   * 文档用途: *** :数据结构与算法分析-c语言描述
 8   * 作者信息: *** :guochaoxxl(http://cnblogs.com/guochaoxxl)
 9   * 修订时间: *** :2020年第47周 11月28日 星期六 下午09:53 (第333天)
10   * 文件描述: *** :自行添加
11  * *+=+=+=+=* *** *+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+*/
12 #include <stdio.h>
13 #include <string.h>
14 
15 typedef struct _memb{
16     char name[20];
17     struct _memb *forward; 
18     struct _memb *backward; 
19 } Memb;
20 
21 void showForward(Memb *start){
22     int flag = 1;
23     do{
24         printf("%s\n", start->name);
25         if(start->forward == NULL){
26             flag = 0;
27         }
28         start = start->forward;
29     }while(flag);
30 
31     return;
32 }
33 
34 void showBackward(Memb *end){
35     int flag = 1;
36     do{
37         printf("%s\n", end->name);
38         if(end->backward == NULL){
39             flag = 0;
40         }
41         end = end->backward;
42     }while(flag);
43 
44     return;
45 }
46 
47 int main(int argc, char **argv)
48 {
49     Memb memb1;
50     Memb memb2;
51     Memb memb3;
52     Memb *start;
53     Memb *end;
54 
55     Memb membNum[] = {memb1, memb2, memb3};
56     char *membName[] = {"lina", "mina", "bina"};
57     int size = sizeof(membName)/sizeof(membName[0]);
58     for(int i = 0; i < size; i++){
59         strcpy(membNum[i].name, *(membName + i));
60     }
61 
62     start = &membNum[0];
63     start->forward = &membNum[1];
64     start->forward->forward = &membNum[2];
65     start->forward->forward->forward = NULL;
66 
67     end = &membNum[2];
68     end->backward = &membNum[1];
69     end->backward->backward = &membNum[0];
70     end->backward->backward->backward = NULL;
71 
72     printf("Names of members (forward traversing): \n");
73     showForward(start);
74     printf("\nNames of members (backward traversing): \n");
75     showBackward(end);
76 
77     return 0;
78 }

 

posted @ 2020-11-28 22:36  叕叒双又  阅读(131)  评论(0编辑  收藏  举报