infdelete.cpp

来自「基于VC的小型数据库管理程序源代码」· C++ 代码 · 共 53 行

CPP
53
字号
#include "include.h"

extern Inflinklist *head;
//------------------------------------------------
//--删除信息
//------------------------------------------------
char Infindelete(Inflinklist * ps, char *name)
{    
	 char cc;
	 int n=0; //通过n的值来判断是否链表中有输入的删除姓名项
     Inflinklist * q0, *q1, *del;  //q0指向q1的前一位置,del用来标志姓名符合时的位置
	 q1=ps->next;
	 q0=ps;
     if( q1 == NULL)  //链表只有头结点
		  printf("No information left in the linklist!\n");
	 else
	 { 
		  while(q1!=NULL)  //有同名时需比较到底
		  {
              if(!( q1->name[0]==name[0]))  //比较名字的第一个字符是否相同,不同则继续
			  {                            //节省比较时间
				 q0=q1;
				 q1=q1->next;
			  }
	          else
			  {
		          if(!(strcmp(q1->name, name)))  //比较是否全部相同,相同则找到继续往下
				  {
					  printf("  delete information is below:\n");
                      printf("  name:%s\t sex:%c\t age:%d\t spousename:%s\n",q1->name,q1->sex,q1->age,q1->spousename);
					  q0->next=q1->next;
					  del=q1; // 将位置赋与del,q1继续向前
					  q1=q1->next;
					  free(del);
					  n=n+1;
				  }
                  else
				  {
					  q0=q1;
					  q1=q1->next;
				  }
	          }
		  }//end while
		  if(n==0)  printf("No such name in the list! Be sure the name input is correct!\n");
	 }//end else
	 
	 fflush(stdin);
	 printf("Dlete continue? press Y/y continue;to end,press N/n:\t");
	 cc= GetContinueNote();
	 return cc;
}

⌨️ 快捷键说明

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