学习日志

学习任务:通讯录课程设计的验收

学习心得:今天对自己的程序的改错,发现一定要有足够的耐心,即使错误百出,也要坚持,坚持就是胜利——虽然是人人都说的大白话,但如果真的是自己亲身体会出来的,一定别有一番滋味。

 1 /*****************************************************************
  2 *   Copyright (C) 2018 SU_QIAN Ltd. All rights reserved.
  3 *   
  4 *   文件名称:linklist.c
  5 *   创 建 者:warning
  6 *   创建日期:2018年07月21日
  7 *   描    述:linklist
  8 *
  9 *****************************************************************/
 10 #include <string.h>
 11 #include <stdio.h>
 12 #include <stdlib.h>
 13 
 14 #define OK 1
 15 #define ERROR 0
 16 #define TRUE 1
 17 #define FALSE 0
 18 #define MAXSIZE 20
 19 
 20 
 21 typedef int Status;
 22 //typedef int ElemType;
 23 
 24 char *menu[]={"\n",\
 25             "******************************",\
 26             "***welcome to my phone book***",\
 27             "**        1.insert          **",\
 28             "**        2.locate          **",\
 29             "**        3.delete          **",\
30             "**        4.traverse        **",\
 31             "**        5.clear           **",\
 32             "**        0.quit            **",\
 33             "*****************************"};
 34 
 35 typedef struct node
 36 {
 37     char name[20];//姓名
 38     char number[15];//号码
 39     struct node *next;
 40 }Node;
 41 
 42 typedef Node *LinkList;//head p
 43 
 44 Status InitList(LinkList *L)
 45 {
 46     *L=(LinkList)malloc(sizeof(Node));
 47     if((*L)==NULL)
 48     {
 49         printf("Init Fail!");
 50         return ERROR;
 51     }
 52     (*L)->next=NULL;
 53     return OK;
 54 }
 55 
56 //长度
 57 int ListLength(LinkList L)
 58 {
 59     int i=0;
 60     LinkList p=L->next;
 61     while(p!=NULL)
 62     {
 63         p=p->next;
 64         i++;
 65     }
 66     return i;
 67 }
 68 
 69 //判断是否为空
 70 Status EmptyList(LinkList L)
 71 {
 72     LinkList p=L->next;
 73     if(p==NULL)
 74     {
 75         printf("LinkList is Empty!\n");
 76         return 1;
 77     }
 78     return 0;
 79 }
 80 
 81 //插入
82 Status ListInsert(LinkList L)
 83 {
 84     LinkList p=L;
 85     LinkList q;
 86     q= (LinkList)malloc(sizeof(Node));
 87     if (q == NULL)
 88     {
 89         printf("malloc error!\n");
 90         return ERROR;
 91     }
 92     printf("name:");
 93     scanf("%s",q->name);
 94     printf("number:");
 95     scanf("%s",q->number);
 96     q->next=p->next;
 97     p->next=q;
 98     return OK;
 99 }
100 
101 //遍历
102 Status ListTraverse(LinkList L)
103 {
104     LinkList p;
105     if (NULL == L)
106     {
107         printf("LinkList is not inited\n");return ERROR;
108     }
109     if (EmptyList(L))
110     {
111         printf("the Phone Book is empty\n");return OK;
112     }
113     p = L->next;
114     while( p != NULL)
115     {
116         printf("name is %s\t",p->name);
117         printf("number is %s\n",p->number);
118         p = p->next;
119     }
120     printf("have %d record(s)\n",ListLength(L));
121     return OK;
122 }
123 
124 //定位
125 Status LocateElem(LinkList L)
126 {
127     LinkList p;
128     char name[20];
129     printf("please input the name which you want to locate\n");
130     scanf("%s",name);
131     if (EmptyList(L))
132     {
133         printf("the Phone Book is empty\n");return FALSE;
134     }
135     p = L->next;
136     while(p != NULL)
137     {
138         if(strcmp(name,p->name)==0)
139         {
140         printf("name is %s\t",p->name);
141         printf("number is %s\n",p->number);
142         return TRUE;
143         }p = p->next;
144         }
145         return FALSE;
146 }
147 
148 //删除
149 Status ListDelete(LinkList L)
150 {
151     LinkList p,q;
152     int j,i;
153     if ((L) == NULL)
154     {
155         printf("Linklist is not init\n");return ERROR;
156     }
157     printf("delete which one");
158     scanf("%d",&i);
159     if (i<1 || i>ListLength(L))
160     {
161         printf("delete position error\n");return ERROR;
162     }
163     p = L;
164     j = 1;
165     while(p != NULL && j<i)
166     {
167         p = p->next;
168         j++;
169     }
170     q = p->next;p->next = q->next;  free(q);
171     printf("delete successfully");
172     return OK;
173 }
174 
175 //清空
176 Status ClearList(LinkList L)
177 {
178     //char a[2];
179     //printf("sure to clear?(y/n)");
180     //scanf("%s",a);
181     //if(strcmp(a,'y')==0)
182     LinkList p,q;
183     if(EmptyList(L))
184     {
185         printf("List is empty,need'nt clear\n");
186         return FALSE;
187     }
188     p = (L)->next;
189     while(p != NULL)
190     {
191         q = p;
192         p = p->next;
193         free(q);
194     }
195     (L)->next = NULL;
196     printf("clear successfully!");
197     return TRUE;
198 
199 }
200 
201 //菜单
202 char display_menu(char **menu,int len,LinkList L)
203 {
204     int i;
205     char sel,temp;
206     while(1)
207     {
208         for(i=0;i<len;i++)
209         {
210             printf(" %s\n",*(menu+i));
211         }
212         printf("please input your choice:\n");
213         scanf(" %c",&sel);
214         while(scanf("%c",&temp)!=EOF)
215         {
216             if(temp=='\n')
217             break;
218         }
219         switch(sel)
220         {
221         case '0':
222             printf("thanks\n");exit(0);break;
223         case '2':
224             ListInsert(L);break;
225         case '2':
226             LocateElem(L);break;
227         case '3':
228             ListDelete(L);break;
229         case '4':
230             ListTraverse(L);break;
231         case '5':
232             ClearList(L);break;
233         }
234     }
235 }
236 
237 
238 int main(int argc,char *argv[])
239 {
240     LinkList L;
241     Status i;
242     i=InitList(&L);
243     display_menu(menu,10,L);
244     return 0;
245 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值