#include
<
iostream
>
using namespace std;
struct StrNode;
typedef struct StrNode * PStrNode;
struct StrNode{
char c;
PStrNode link;
};
typedef struct StrNode * LinkString;
void copyStr_link(LinkString & t, LinkString s)
/* 将s所指的带头结点的链串复制为t 所指的带头结点的链串 */
{ PStrNode p,q,r;
t = (PStrNode)malloc( sizeof ( struct StrNode)); /* 创建带头结点的空链串 */
if ( t == NULL ) {
printf( " Out of space! " );
return ;
}
else t -> link = NULL;
p = s -> link;
r = t;
while (p != NULL) {
q = (PStrNode)malloc( sizeof ( struct StrNode));
if (q == NULL)
{ printf( " Out of space! " );
return ;
}
q -> c = p -> c;
q -> link = NULL;
r -> link = q; /* 结点放入子链串中 */
r = q;
p = p -> link;
}
}
LinkString createStr_link(){
LinkString s = (LinkString)malloc( sizeof ( struct StrNode));
s -> link = NULL;
char ch,flag;
PStrNode r = s;
cout << " 输入字符串结束字符: " ;
cin >> flag;
cout << " 输入字符串中的各个字符,以 " << flag << " 为结束符: " ;
cin >> ch;
while (ch != flag){
PStrNode p = (PStrNode)malloc( sizeof ( struct StrNode));
if (p == NULL){
cout << " 内存溢出! " << endl;
return s;
}
else {
p -> c = ch;
p -> link = NULL;
r -> link = p;
r = p;
}
cin >> ch;
}
return s;
}
void printStr_link(LinkString s){
PStrNode p = s -> link;
while (p != NULL){
cout << p -> c;
p = p -> link;
}
cout << endl;
}
void main(){
LinkString s,t;
s = createStr_link();
printStr_link(s);
copyStr_link(t,s);
printStr_link(t);
}
using namespace std;
struct StrNode;
typedef struct StrNode * PStrNode;
struct StrNode{
char c;
PStrNode link;
};
typedef struct StrNode * LinkString;
void copyStr_link(LinkString & t, LinkString s)
/* 将s所指的带头结点的链串复制为t 所指的带头结点的链串 */
{ PStrNode p,q,r;
t = (PStrNode)malloc( sizeof ( struct StrNode)); /* 创建带头结点的空链串 */
if ( t == NULL ) {
printf( " Out of space! " );
return ;
}
else t -> link = NULL;
p = s -> link;
r = t;
while (p != NULL) {
q = (PStrNode)malloc( sizeof ( struct StrNode));
if (q == NULL)
{ printf( " Out of space! " );
return ;
}
q -> c = p -> c;
q -> link = NULL;
r -> link = q; /* 结点放入子链串中 */
r = q;
p = p -> link;
}
}
LinkString createStr_link(){
LinkString s = (LinkString)malloc( sizeof ( struct StrNode));
s -> link = NULL;
char ch,flag;
PStrNode r = s;
cout << " 输入字符串结束字符: " ;
cin >> flag;
cout << " 输入字符串中的各个字符,以 " << flag << " 为结束符: " ;
cin >> ch;
while (ch != flag){
PStrNode p = (PStrNode)malloc( sizeof ( struct StrNode));
if (p == NULL){
cout << " 内存溢出! " << endl;
return s;
}
else {
p -> c = ch;
p -> link = NULL;
r -> link = p;
r = p;
}
cin >> ch;
}
return s;
}
void printStr_link(LinkString s){
PStrNode p = s -> link;
while (p != NULL){
cout << p -> c;
p = p -> link;
}
cout << endl;
}
void main(){
LinkString s,t;
s = createStr_link();
printStr_link(s);
copyStr_link(t,s);
printStr_link(t);
}