题目:编写一个程序,输入若干人员的姓名和电话号码,若姓名字符为“#”表示结束输入。然后输入姓名查找此人电话号码。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct people
{
char cName[20];
char cNumber[12];
struct people *pStrNext;
};
//创建链表
struct people * create()
{
struct people *pStrPeoHead = 0, *pStrPeoTemp, *pStrPeoTail = 0;
char cNameTemp[20];
char cNumberTemp[12];
printf("input name ");
gets_s(cNameTemp);
//添加结点,当输入#时结束
while (cNameTemp[0] != '#')
{
printf("input phonenumber");
gets_s(cNumberTemp);
//申请结点并填入数据
pStrPeoTemp = (struct people*)malloc(sizeof(struct people));
strcpy_s(pStrPeoTemp->cName, cNameTemp);
strcpy_s(pStrPeoTemp->cNumber, cNumberTemp);
pStrPeoTemp->pStrNext = 0;
//接入链表
if (!pStrPeoHead)
//接入第一个结点,头指针,尾指针均指向该结点
pStrPeoHead = pStrPeoTail = pStrPeoTemp;
else
{
//接入非第一个结点
pStrPeoTail->pStrNext= pStrPeoTemp;
pStrPeoTail = pStrPeoTemp;
}
printf("input name ");
gets_s(cNameTemp);
}
return pStrPeoHead;
}
//查找结点
struct people*search(struct people*pStrPeoTemp, char cNameTemp[20])
{
while (pStrPeoTemp)
{
if (strcmp(pStrPeoTemp->cName,cNameTemp)==0)
break;
pStrPeoTemp = pStrPeoTemp->pStrNext;
}
return pStrPeoTemp;
}
int main()
{
struct people StrPeoTemp;
struct people *pStrPeoHead, *pStrPeoResult;
char cNumberTemp[12];
char cNameTemp[20];
pStrPeoHead = create();
printf("输入查找姓名 ");
gets_s(cNameTemp);
pStrPeoResult = search(pStrPeoHead, cNameTemp);
if (pStrPeoResult)
printf("姓名:%s,号码:%s", pStrPeoResult->cName, pStrPeoResult->cNumber);
}