SElemType C++
时间: 2024-09-03 17:04:07 浏览: 149
在C++中,`SElemType`通常是一个类型别名,用于定义容器(如`std::vector`, `std::map`, 等)所存储元素的数据类型。例如,如果你正在创建一个存储整数的动态大小向量,你可能会声明:
```cpp
typedef int SElemType;
std::vector<SElemType> myVector;
```
这里,`SElemType`就是一种类型别名,使得`myVector`可以方便地存放`int`类型的元素。这样做的好处是提高了代码的可读性和复用性,因为你可以轻松地将`SElemType`替换为任何其他数据类型。
相关问题
第一题: 1.题目:栈抽象数据类型的调试: 顺序栈存储结构的定义 #define MAXSIZE 100 typedef char SElemType; typedef struct { SElemType *base; SElemType *top; int stacksize; }SqStack; 调试常用操作如下: int InitStack( SqStack &S ) int StackEmpty( SqStack S ) int StackLength( SqStack S ) int Push( SqStack &S, SElemType e) int Pop( SqStack &S, SElemType &e) 2.设单链表中存放n个字符,试设计一个算法,判断该字符串是否中心对称。 2.需求分析: 1)程序功能:判断n个字符是否中心对称。 2)输入数据: 输入n个字符 3)输出数据:该字符中心对称/该字符串中心对称 4)测试数据: 例: 5 xndnx // 8 ttccccbb 3.概要设计: 1)逻辑结构:栈 2)程序结构设计:包括以下函数 ①主函数 main() ②CreateList(LinkList &L,int n) ③judge(LinkList L, int n) ④Push(SqStack &S,SElemType e) ⑤InitStack(SqStack &S) ⑥Pop(SqStack &S,SElemType &e) 4.详细设计:用C++实现
1. 栈抽象数据类型的调试
定义顺序栈存储结构:
```c++
#define MAXSIZE 100
typedef char SElemType;
typedef struct {
SElemType *base;
SElemType *top;
int stacksize;
} SqStack;
```
初始化栈:
```c++
int InitStack(SqStack &S) {
S.base = new SElemType[MAXSIZE];
if (!S.base) return 0;
S.top = S.base;
S.stacksize = MAXSIZE;
return 1;
}
```
判断栈是否为空:
```c++
int StackEmpty(SqStack S) {
if (S.top == S.base) return 1;
else return 0;
}
```
获取栈的长度:
```c++
int StackLength(SqStack S) {
return S.top - S.base;
}
```
入栈操作:
```c++
int Push(SqStack &S, SElemType e) {
if (S.top - S.base == S.stacksize) return 0;
*(S.top++) = e;
return 1;
}
```
出栈操作:
```c++
int Pop(SqStack &S, SElemType &e) {
if (S.top == S.base) return 0;
e = *(--S.top);
return 1;
}
```
2. 判断单链表是否中心对称
定义单链表节点结构:
```c++
typedef struct LNode {
char data;
struct LNode *next;
} LNode, *LinkList;
```
创建单链表:
```c++
void CreateList(LinkList &L, int n) {
L = new LNode;
L->next = NULL;
LNode *r = L;
for (int i = 0; i < n; i++) {
LNode *p = new LNode;
cin >> p->data;
p->next = NULL;
r->next = p;
r = p;
}
}
```
判断单链表是否中心对称:
```c++
int judge(LinkList L, int n) {
SqStack S;
InitStack(S);
LNode *p = L->next;
for (int i = 0; i < n / 2; i++) {
Push(S, p->data);
p = p->next;
}
if (n % 2 != 0) p = p->next;
while (p != NULL) {
char e;
Pop(S, e);
if (p->data != e) return 0;
p = p->next;
}
return 1;
}
```
主函数:
```c++
int main() {
LinkList L;
int n;
cin >> n;
CreateList(L, n);
if (judge(L, n)) cout << "该字符串中心对称" << endl;
else cout << "该字符串不中心对称" << endl;
return 0;
}
```
用C++实现完整代码,第一题: 1.题目:栈抽象数据类型的调试: 顺序栈存储结构的定义 #define MAXSIZE 100 typedef char SElemType; typedef struct { SElemType *base; SElemType *top; int stacksize; }SqStack; 调试常用操作如下: int InitStack( SqStack &S ) int StackEmpty( SqStack S ) int StackLength( SqStack S ) int Push( SqStack &S, SElemType e) int Pop( SqStack &S, SElemType &e) 2.设单链表中存放n个字符,试设计一个算法,判断该字符串是否中心对称。 2.需求分析: 1)程序功能:判断n个字符是否中心对称。 2)输入数据: 输入n个字符 3)输出数据:该字符中心对称/该字符串中心对称 4)测试数据: 例: 5 xndnx // 8 ttccccbb 3.概要设计: 1)逻辑结构:栈 2)程序结构设计:包括以下函数 ①主函数 main() ②CreateList(LinkList &L,int n) ③judge(LinkList L, int n) ④Push(SqStack &S,SElemType e) ⑤InitStack(SqStack &S) ⑥Pop(SqStack &S,SElemType &e) 4.详细设计:
1.题目:栈抽象数据类型的调试: 顺序栈存储结构的定义
```c++
#define MAXSIZE 100
typedef char SElemType;
typedef struct {
SElemType *base;
SElemType *top;
int stacksize;
} SqStack;
//初始化栈
int InitStack(SqStack &S) {
S.base = new SElemType[MAXSIZE];
if (!S.base) return 0;
S.top = S.base;
S.stacksize = MAXSIZE;
return 1;
}
//判断栈是否为空
int StackEmpty(SqStack S) {
if (S.top == S.base) return 1;
else return 0;
}
//获取栈的长度
int StackLength(SqStack S) {
return S.top - S.base;
}
//入栈操作
int Push(SqStack &S, SElemType e) {
if (S.top - S.base == S.stacksize) return 0;
*(S.top++) = e;
return 1;
}
//出栈操作
int Pop(SqStack &S, SElemType &e) {
if (S.top == S.base) return 0;
e = *(--S.top);
return 1;
}
```
2.设单链表中存放n个字符,试设计一个算法,判断该字符串是否中心对称。
```c++
#include<iostream>
using namespace std;
typedef struct LNode {
char data;
LNode *next;
} *LinkList;
//初始化链表
void CreateList(LinkList &L, int n) {
L = new LNode;
L->next = NULL;
LNode *p, *q;
p = L;
for (int i = 1; i <= n; i++) {
q = new LNode;
cin >> q->data;
q->next = NULL;
p->next = q;
p = q;
}
}
//判断字符串是否中心对称
int judge(LinkList L, int n) {
SqStack S;
InitStack(S);
LNode *p = L->next;
int i;
for (i = 1; i <= n / 2; i++) {
Push(S, p->data);
p = p->next;
}
if (n % 2 == 1) p = p->next;
while (p != NULL) {
SElemType e;
Pop(S, e);
if (e != p->data) return 0;
p = p->next;
}
return 1;
}
int main() {
int n;
cin >> n;
LinkList L;
CreateList(L, n);
if (judge(L, n)) cout << "该字符串中心对称" << endl;
else cout << "该字符串不中心对称" << endl;
return 0;
}
```
阅读全文