示例#1
0
/*
// 前条件:用户触发了“删除联系人信息”按钮,并输入了联系人信息
// 后条件:将用户输入的联系人信息从 myList 表中删除
*/
bool MyClass::deleteUsrInfo(std::string &uNumber, std::string &uName,
							std::string &uAddress) {
	if ( !findUsrInfo(uNumber, uName, uAddress) ) {
		// 联系人不存在
		return false;
	} else {
		ListNode *front = NULL, *current = NULL;
		int ct = cantor( uNumber.substr(3) );
		
		current = myList[ct];
		while ( current != NULL ) {
			if (current -> usrNumber == uNumber 
				&& lowerCompare(current -> usrName, uName)
				&& lowerCompare(current -> usrAddress, uAddress)) {
				if (current == myList[ct]) {  // 首节点
					myList[ct] = current -> next;
				} else {  // 中间或尾节点
					front -> next = current -> next;
				}
				delete current;  // 删除节点
				break;
			}
			front = current, current = current -> next;
		}// End of while
		return true;
	}// End of else
}
示例#2
0
/*
// 前条件:用户输入了联系人信息
// 后条件:将合法的联系人信息通过哈希法插入到 myList 表中
*/
void MyClass::insertUsrInfo(std::string &uNumber, std::string &uName,
							std::string &uAddress) {
  int ct = cantor( uNumber.substr(3) );  // 取手机号码后 8 位作康托展开
	
	ListNode *ptr = new ListNode();
	ptr -> usrNumber = uNumber;
	ptr -> usrName = uName;
	ptr -> usrAddress = uAddress;
	ptr -> next = myList[ct], myList[ct] = ptr;  // 插入表头
}
示例#3
0
/*
// 前条件:用户触发了“查找联系人信息”按钮,并输入了联系人信息
// 后条件:查找用户所请求的联系人信息,结果返回指针结果节点的指针
*/
ListNode* MyClass::searchUsrInfo(std::string &uNumber, std::string &uName) {
	if ( isOkey(uNumber) ) {
		int ct = cantor( uNumber.substr(3) );
		ListNode *ptr = myList[ct];
		
		while (ptr != NULL) {
			if (ptr -> usrNumber == uNumber
				&& lowerCompare(ptr -> usrName, uName)) {
				return ptr;
			}
			ptr = ptr -> next;
		}// End of while
	}
	return NULL;
}
示例#4
0
/*
// 前条件:用户输入了联系人信息
// 后条件:从 myList 表中查找合法的联系人信息
*/
bool MyClass::findUsrInfo(std::string &uNumber, std::string &uName,
						  std::string &uAddress) {
	if (!isOkey(uNumber)) {
		// 长度不足 11 位 或者 是非法字符串(不是数字串)
		return false;
	} else {
		int ct = cantor( uNumber.substr(3) );
		
		ListNode *ptr = myList[ct];
		while ( ptr != NULL ) {
			if (ptr -> usrNumber == uNumber
				&& lowerCompare(ptr -> usrName, uName)
				&& lowerCompare(ptr -> usrAddress, uAddress)) {
				return true;
			}
			ptr = ptr -> next;
		}// End of while
		return false;
	}// End of else
}
示例#5
0
int main()
{
    int t,i;
    long *ip;
    scanf("%d",&t);

    ip = (long*) calloc(t,sizeof(long));

    for(i=0;i<t;i++)
       scanf("%ld",&ip[i]);

    for(i=0;i<t;i++){
        printf("TERM %ld IS ",ip[i]);
        cantor(ip[i]);
        printf("\n");
    }


    return 0;
}