⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 5_44.cpp

📁 C++程序设计技能百练随书配套光盘的源码
💻 CPP
字号:
# include<iostream.h>
#include <iomanip.h>
# include<string.h>
struct date
{
	int year; int month; int day;
};
struct friends
{
	char name[10]; char sex;char tel[12]; date birthday;friends* next;
};
int n;  //动态分配结构friends的个数
struct friends* create()   //新建链表,此函数返回一个指向链表头的指针
{
	struct friends* head,*p1,*p2;
	n=0;
	p1=p2=new friends;
    cout<<"Input my friends'name ,with'#' to end:"<<endl;
	cin>>p1->name;
	cout<<"Continue to input my friends'sex(F/M),tel and birthday:"<<endl;
    cin>>p1->sex;
    cin>>p1->tel;
	cin>>p1->birthday.year>>p1->birthday.month>>p1->birthday.day;
	head=NULL;
    while (strcmp(p1->name,"#")!=0)
	{
		n++;
		if(n==1)
			head=p1;
		else
			p2->next=p1;
		p2=p1;
		p1=new friends;
		cout<<"Input my friends'name ,with'#' to end:"<<endl;
	    cin>>p1->name;
		if(strcmp(p1->name,"#")!=0)
		{
	    cout<<"Continue to input my friends'sex(F/M),tel and birthday:"<<endl;
        cin>>p1->sex;
        cin>>p1->tel;
	    cin>>p1->birthday.year>>p1->birthday.month>>p1->birthday.day;
		}
	}
	p2->next=NULL;
	return head;
}
void print(struct friends* head)  //输出链表
{
	struct friends* p;
	p=head;
	cout<<setw(11)<<"name"<<setw(5)<<"sex"<<setw(12)<<"telNO."<<setw(16)<<"birthday"<<endl;
	while(p!=NULL)
	{
		cout<<setw(11)<<p->name<<setw(4)<<p->sex<<setw(16)<<p->tel<<"  ";
		cout<<setw(5)<<p->birthday.year;
        cout<<setw(3)<<p->birthday.month<<"  ";
		cout<<setw(2)<<p->birthday.day<<endl;
		p=p->next;
	}
}
struct friends*DELETE(struct friends*head,char name[])
{
	struct friends*p1,*p2;
	if(head==NULL)
	{
		cout<<"list null!DO NOT DELETE!";
		return(head);
	}
	p1=head;
	while(strcmp(p1->name,name)!=0 && p1->next!=NULL)
	{
		p2=p1;
		p1=p1->next;
	}
	if(strcmp(p1->name,name)==0)
	{
		if(p1==head) head=p1->next;
		else p2->next=p1->next;
		delete p1;
		cout<<"delete:"<<name;
	}
	else
		cout<<name<<"has not been found!"<<endl;
	return head;
}
struct friends*insert(struct friends*head,struct friends*frd)
{
	struct friends*p0,*p1,*p2;
	p1=head;
	p0=frd;
	if(head==NULL)
	{
		head=p0; p0->next=NULL;
	}
	else  
		while(strcmp(p0->name,p1->name)>0 && p1->next!=NULL)
		{
			p2=p1;p1=p1->next;
		}
	if (strcmp(p0->name,p1->name)<=0 )
	{
		if(head==p1)
		{
			head=p0;
			p0->next=p1;
		}
		else
		{
			p2->next=p0;
			p0->next=p1;
		}
	}
	else
	{
		p1->next=p0;
		p0->next=NULL;
	}
	n++;
	return head;
}

void main()
{
	char del[10];
	friends*s,*t;
	s=create();
	print(s);
	cout<<"Input the name you want deleted:";
	cin>>del;
	s=DELETE(s,del);
	cout<<endl;
	print(s);
	cout<<"Input the name you want inserted:";
	t=new friends;
	cin>>t->name>>t->sex>>t->tel>>t->birthday.year>>t->birthday.month>>
t->birthday.day;
	s=insert(s,t);
	print(s);
	delete t;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -