这一篇给大家介绍子函数,大多是对于链表的操作,就不一一赘述。
(代码复制的时候格式有点问题,空行较多)
1 NODE *create() 2 3 { 4 5 NODE* p; 6 7 p=OP; // #define OP 8 9 10 11 return p; 12 13 } 14 15 16 17 int revise(NODE* head) 18 19 { 20 21 NODE* p; 22 23 char name[20],yn; 24 25 26 27 puts(" Please enter the name of contacts that should be revised "); 28 29 getchar(); 30 31 gets(name); 32 33 34 35 //---查找与所输入名字相同的节点 36 37 38 39 p=head->next; 40 41 42 43 while(p) 44 45 { 46 47 if(strcmp(p->name,name)==0) 48 49 { 50 51 printf(" * Name revise?(y/n) *"); 52 53 yn=getchar(); 54 55 getchar(); 56 57 58 59 if(yn=='y') 60 61 { 62 63 printf(" * Enter new name: *"); 64 65 gets(p->name); 66 67 } 68 69 70 71 printf(" * Tel revise?(y/n) *"); 72 73 yn=getchar(); 74 75 getchar(); 76 77 78 79 if(yn=='y') 80 81 { 82 83 printf(" * Enter new tel: *"); 84 85 gets(p->tel); 86 87 } 88 89 90 91 printf(" * Email revise?(y/n) *"); 92 93 yn=getchar(); 94 95 getchar(); 96 97 98 99 if(yn=='y') 100 101 { 102 103 printf(" * Enter new email: *"); 104 105 gets(p->email); 106 107 } 108 109 110 111 printf(" * Sort revise?(y/n) *"); 112 113 yn=getchar(); 114 115 getchar(); 116 117 118 119 if(yn=='y') 120 121 { 122 123 printf(" * Enter new sort: *"); 124 125 p->sort=getchar(); 126 127 getchar(); 128 129 //printf(" new sort:%d",p->sort); 130 131 } 132 133 134 135 puts(" * Revise succeed *"); 136 137 return 1; 138 139 140 141 } 142 143 p=p->next; 144 145 } 146 147 148 149 //---没有找到则返回0 150 151 puts(" * Not find this contacts *"); 152 153 return 0; 154 155 156 157 158 159 160 161 162 163 } 164 165 166 167 void build(NODE* head,int len,NODE stu[]) 168 169 { 170 171 NODE* p,*q; 172 173 int i,j; 174 175 176 177 //---建立链表并赋入结构体数组中的信息 178 179 p=head; 180 181 182 183 for(i=0;i<len;i++) 184 185 { 186 187 q=OP; 188 189 p->next=q; 190 191 for(j=0;stu[i].name[j] != '