inf_t getInf(void) //獲取聯(lián)系人信息
{
inf_t t_get;
char *pch;
printf("\t聯(lián)系人姓名:");
setbuf(stdin,(char *)0);
scanf("%[^\n]",t_get.name); //存入除換行以外的所有字符
printf("\t該聯(lián)系人地址:");
setbuf(stdin,(char *)0);
scanf("%[^\n]",t_get.address);
lableTel:
printf("\t電話或手機號碼:");
setbuf(stdin,(char *)0);
scanf("%s",t_get.tel);
/*處理當號碼不為數(shù)字的情況*/
for(pch = t_get.tel; *pch != '\0'; pch++){
if(*pch < '0' || *pch > '9'){
puts("該通訊錄暫只支持純數(shù)字的電話號碼!");
goto lableTel;
}
}
return t_get;
}
void insert(inf_t inf)//創(chuàng)建一個新結點,數(shù)據(jù)域存放inf,通過頭插法插入單鏈表
{
link p = (struct node *)malloc(sizeof *p);
p->date = inf;
p->next = head;
head = p;
}
/*匹配單鏈表中為姓名項為name的節(jié)點 pre為指向該節(jié)點前一項的指針的指針 */
link pop(const char *name,link *pre){
link p = head;
while(p != NULL){
if(strcmp(name,p->date.name) == 0){
return p;
}
*pre = p;
p = p->next;
}
return NULL;
}
void del(link pre,link cur) //刪除cur結點,pre為cur前一個結點
{
if(cur == head){
head = cur->next;
}
else pre->next = cur->next;
free(cur);
}
void outputOne(link p)
{
printf("|%-20s%-30s%-15s|\n",p->date.name,p->date.address,p->date.tel);
}
void output(void)
{
link p = head;
B_PUT;
while(p != NULL){
outputOne(p);
p = p->next;
}
END_PUT;
相關推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |