C++一个程序解释

来源:百度知道 编辑:UC知道 时间:2024/06/23 06:12:58
#include<iostream.h>
#include<stdio.h>
#include<ctype.h>

struct ca {
char c;
ca *next;
};

void InitList(ca *L) {
cout<<"输入一页文字(以#结束): "<<endl;
while((L->c = getchar()) != '#') {
L->next = new ca;
L = L->next;
}
L->next = NULL;
}

void StrNo(ca *L) {
int n = 0;
char s[80], *q;
ca *p;
cout<<"输入一字符串: ";
cin>>s;
while(L->next) {
for (p = L, q = s; *q != '\0' && p->next; p = p->next, q++)
if (p->c != *q) break;
if (*q == '\0') n++;
L = L->next;
}
cout<<"字符串 "<<s<<" 出现 "<<n<<" 次\n";
}

ca *DelStr(ca *L) {
ca *H = L;
char s[80], *q;
ca *p;
cout<<"输入该子串: ";
cin>>s;

#include<iostream.h> // ISO C++ IO library
#include<stdio.h> // ISO C IO library其实这样写是不必要的,建议如下:
#include<ctype.h> //
// #include <iostream>
// using namespace std;
// #include <ctype>

struct ca { // 定义一个结构
char c; // 用来保存char字符
ca *next; // 用来保存本结构类型的指针
};

void InitList(ca *L) { // 定义一个带参InitList函数,参数类型为ca结构体的指针
cout<<"输入一页文字(以#结束): "<<endl; // 如果头文件不改,这样这语法是错误的,
//除非,std:: cout << …… << std:: endl;
while((L->c = getchar()) != '#') { // 循环讲得到的字符放在由new申请的ca类型堆中,第一次的堆在function main中申请并将其指针付给形参L,循环到得不到字符(即读完文本时)时退出循环
L->next = new ca;// 再次申请一个堆,用来存放下一次循环得到的字符;并将L的next指针指向这个堆;
L = L->next; // L指向新申请的堆,即L存放新申请的堆的地址,即上个注释中的next指针值
}
L->next = NULL;// 将最后一个堆的next指针赋值为空,防止野指针的存在,加强程序健壮性;
}

void StrNo(ca *L) {
int n = 0; // 申请一个整形变量n作为计数器,并初始化为0;