填空题

[说明]
若S和T是用结点大小为1的单链表存储的两个串,试设计一个算法找出S中第一个不在T中出现的字符。查找过程是这样的,取S中的一个字符(结点),然后和T中所有的字符一一比较,直到比完仍没有相同的字符时,查找过程结束,否则再取S中下一个字符,重新进行上述过程。
[函数]
typedef struct node
char data;
struct node *next;
LinkStrNode; //结点类型
typedef LinkStrNode *LinkString; //LinkString 为链串类型
LifikString S; //S 是链串的头指针
char SearchNoin ( LinkString S, LinkString T )
//查找不在T中出现的字符
LinkStrNode *p, *q;
(1) ;
q=T;
while ( (2) )
//取S中结点字符
while( (3) )//进行字符比较
q=q->next;
if(q==NULL) return (4) ;//找到并返回字符值
q=T;//指针恢复串T的开始结点
( (5) );

printf("there’s no such character.");
return NULL:

【参考答案】

(1)p=S (2)p (3)q&&p->data!=q->data (4)p->data (5)p=p->next
热门 试题

填空题
[函数8.1说明] 现考虑编写一个扑克游戏:只用一副无大小王的扑克,扑克的花色(suit)分为Spade、Heart、Diamond和Club,每门花色的牌共13张,面值(rank)分别为2、3、4、5、6、7、8、9、10、Jack、Queen、King和Ace,每张扑克牌应包含如下信息:惟一的ID号(1~52)、花色、面值、背面图案的编号等。每张扑克牌的操作有:判断两张扑克牌是相同花色吗相同面值吗,判断一张扑克牌是给定的花色吗是给定的面值吗请补充扑克牌类Card类的声明和实现代码,要求选取适当形式的数据成员描述每张扑克牌的信息,同时以成员函数的形式实现指定的操作。[C++程序]const enum SUIT SPADE=0,HEART,DIAMOND,CLUB;const enum RANKTWO=0 THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,JACK,QUEEN,KING,ACE;class Card。 public: (1) (int id):mID (id),mSuit((id 1) 13),mRank((id-1)%13) bool IsSameSuit (const Card& rhs) retum ((this ==&rhs) (2) )); bool IsSankRank (const Card& rhs) return ((this==&rhs)false: mRank==rhs. mRank); bool IsSuit (int suit) return (3) ; bool IsRank(int rank) return mRank==rank; private: static int nBackImg; 背面图案 const int mID; const int mSuit; const int mRank; ; [函数8.2说明] 输入一字符串,将其中所有的小写字母转换为大写字母,大写字母转换为小写字母,然后显示输出转换后的字符串。 [C++程序]#include<iostream. h>class vector int a; int b;public: vector (int x=0,int y=0):a(x),b(y) double operator*( (4) ) double c; (5) ; return c; void input (int x, int y) a=x; b=y; void output () cout<<’(’<<a<<’,’ <<b<< ) <<end1;;void main() vector x(10,20),y; 定义x, y, z三个矢量类对象,并将x置初值(10,20) doubled; 定义实数d以存放点乘结果 y. input (2,3); 给y赋值为(2,5) d=x*y; 两矢量点乘 x. output (); 输出矢量x y. output (); 输出矢量y cout<<d<<end1; 输出点乘结果