链表通讯录demo

#include "stdafx.h"
#include<iostream>
#include<string>
#include<cstring>
using namespace std;

struct TelePhonePeople
{
	char name[200];
	char telephone[200];
};
typedef struct TelePhone
{
	struct TelePhonePeople person;
	struct TelePhone *nxt;
}TelePhone,*LinkList;
void SearchPerson(LinkList &dd, int k)
{
	LinkList p;
	p = dd;
	int i;
	for (i = 1; i <=k; i++)
	{
		
		p = p->nxt;
		if (p== NULL)
		{
			cout << "查找错误,请确认位置后再查找" << endl;
			return;
		}
	}
	if (p != NULL)
	{
		cout <<"联系人姓名"<< p->person.name<<"联系人电话"<<p->person.telephone << endl;
	}
	else
	{
		cout << "查找错误,请确认位置后再查找" << endl;
		return;
	}
}
void Addpeople(TelePhonePeople pp, LinkList &dd)
{
	LinkList p;
	p= (LinkList)malloc(sizeof(TelePhone));
	LinkList q;
	q = dd;
	while (q->nxt!=NULL)
	{
		q = q->nxt;
	}
	q->nxt = p;
	p->person = pp;
	p->nxt = NULL;
	cout << "完成添加" << endl;
}
void PutPerson(LinkList &dd)
{
	LinkList p;
	p = dd;
	while (p->nxt!=NULL)
	{
		p = p->nxt;
		cout << "联系人姓名" << p->person.name << "联系人电话" << p->person.telephone << endl;
	}
	cout << endl;
	//cout << "联系人姓名" << p->person.name << "联系人电话" << p->person.telephone << endl;
}
void DeletePerson(LinkList &dd, int k)
{
	LinkList p;
	p = dd;
	int i;
	for (i = 1; i <= k-1; i++)
	{
		if (p == NULL)
		{
			cout << "查找错误,请确认位置后再查找" << endl;
			return;
		}
		p = p->nxt;
	}
	if (p != NULL)
	{
		if ((p->nxt)->nxt == NULL)
		{
			p->nxt = NULL;
		}
		else
		{
			p->nxt = (p->nxt)->nxt;
		}
		cout << "完成删除" << endl;
	}
	else
	{
		cout << "查找错误,请确认位置后再查找" << endl;
		return;
	}
}
void Addpp(int k, LinkList &dd, TelePhonePeople pp)
{
	LinkList p;
	p = (LinkList)malloc(sizeof(TelePhone));
	LinkList q;
	q = dd;
	int i;
	for (i = 1; i <= k - 1; i++)
	{
		if (q == NULL)
		{
			cout << "查找错误,请确认位置后再查找" << endl;
			return;
		}
		q = q->nxt;
	}
	p = q->nxt;
	p->person = pp;
	p->nxt = q->nxt->nxt;
	cout << "完成添加" << endl;
}
int main()
{
	LinkList head;
	string x;
	int k;
	TelePhonePeople person;
	head = (LinkList)malloc(sizeof(TelePhone));
	head->nxt = NULL;
	for (;;)
	{
		cout << "添加联系人请输入+" << endl;
		cout << "查找某个位置联系人请输入*" << endl;
		cout << "删除某个位置联系人请输入-" << endl;
		cout << "在位置添加联系人请输入." << endl;
		cout << "打印联系表请输入/" << endl;
		cout << "退出该程序请输入!" << endl;
		cout << endl;
		cin >> x;
		if (x == "+")
		{
			
			//cout << endl;
			cout << "输入联系人名字" << endl;
			cin >> person.name;
			cout << "请输入联系人电话" << endl;
			cin >> person.telephone;
			//cout << endl;
			Addpeople(person, head);
		}
		else if (x == ".")
		{
			//cout << endl;
			cout << "输入联系人名字" << endl;
			cin >> person.name;
			cout << "请输入联系人电话" << endl;
			cin >> person.telephone;
			cout << "插入位置" << endl;
			cin >> k;
			Addpp(k, head, person);
		}
		else if(x=="*")
		{
			
			cin >> k;
			SearchPerson(head, k);
		}
		else if(x=="-")
		{
			cin >> k;
			DeletePerson(head,k);
		}
		else if(x=="/")
		{
			PutPerson(head);
		}
		else
		{
			return 0;
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值