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

📄 4.cpp

📁 数据结构课程设计
💻 CPP
字号:
#include "head.h"

//删除
//(4.1)删除指定线性表中的第i个数据元素的函数
void	creat41(h_list	&lead)
{
	int		i=0,j=1,temp=0,e=0;								//e为要删除的第几个元素
	link	p,q;
	char	moniker[12];
	printf("请输入要删除元素的线性表的名字:");
	scanf("%s",moniker);
	for(i=0;i<lead->length;i++)
	{
		temp=strcmp(lead->assistant[i]->name,moniker);
		if(!temp)	break;
	}
	if(!temp)	printf("有此线性表!!!\n");
	else	
	{
		printf("无此线性表!!!\n");
		return;
	}	
	printf("请输入要删除线性表的数据:");
	scanf("%d",&e);

    p=lead->assistant[i]->tou;				//q,p扫描
	q=p->next;
	while (p->next && j<e)					//循环结束时p不可能为空
	{  
	   p=p->next;							//p后移,指向下一个位置
       j++;
	}
	if (e<1||p->next==NULL)					//删除点错误
	{
	   printf("删除点错误!!!");
	   return;
	}
	q=p->next;								//q指向删除结点
	p->next=q->next;						//从链表中摘出
	free(q);								//释放结点空间
	printf("成功删除该结点!!");
}

//删除
//(4.2)删除指定线性表中的满足某种条件的数据元素的函数
void	creat42(h_list	&lead) 
{ 
	int		i=0,temp=0,e=0;					//e为需要删除的元素
	link	p,q;
	char	moniker[12];
	printf("请输入要删除元素的线性表的名字:");
	scanf("%s",moniker);
	for(i=0;i<lead->length;i++)
	{
		temp=strcmp(lead->assistant[i]->name,moniker);
		if(!temp)	break;
	}
	if(!temp)	printf("有此线性表!!!\n");
	else	
	{
		printf("无此线性表!!!\n");
		return;

	}	
	printf("请输入要删除线性表的数据:");
	scanf("%d",&e);
    q=lead->assistant[i]->tou;				//q,p扫描
	p=q->next;	
	while(p && p->data!=e)					//查找元素为e的结点
    { 
		q=p;								//记住前一个结点
		p=p->next;							//查找下一个结点
	}
    if (p)									//有元素为e的结点
     { 
		q->next=p->next;					//删除该结点
		free(p);							//释放结点所占的空间
		printf("成功删除该结点!!");
      }        
    else
		printf("没有删除该结点!!");			//没有删除结点
}


//数据元素删除函数
void main4(h_list	&lead)
{	
	int		choice=1,e=0,i=0;
	while (choice!=0)
	{          
		printf("      ////////////////////////////////////////////////// \n");
		printf("      //  请输入数字 0 到 2 选择:                     // \n");
		printf("      //  1.  删除指定线性表中的第i个数据元素         // \n");
		printf("      //  2.  删除指定线性表中的满足某种条件的数据元素// \n");
		printf("      //  0.  退出程序!!!                             // \n");
		printf("      //  请输入你的选择:                             // \n");
		printf("      ////////////////////////////////////////////////// \n");
		scanf("%d",&choice);
		system("cls");
		switch (choice)
		{
			case 1:	 creat41(lead);break;				//删除指定线性表中的第i个数据元素
			case 2:  creat42(lead);break;				//删除指定线性表中的满足某种条件的数据元素
			case 0:  break;
			default: printf("输入错误!!!\n");
		}
	}
}

⌨️ 快捷键说明

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