typedef char DataType; typedef int WeightType
时间: 2024-04-03 22:29:05 浏览: 33
typedef是C语言中的一个关键字,用于给已有的数据类型起一个新的名字。在这个例子中,typedef被用来定义两个新的数据类型:DataType和WeightType。
DataType被定义为char类型,表示数据的类型是字符型。
WeightType被定义为int类型,表示数据的类型是整型。
这样,在程序中可以使用DataType和WeightType来代替char和int,使代码更加清晰易读。
相关问题
#define MAXSIZE 1000 #define SIZE 100 #define OVERFLOW -1 #define OK 1 #define ZERO 0 typedef char DataType; typedef int Elemtype; typedef struct node//创建链表 { DataType data[MAXSIZE]; struct node* next; }LNode, * LinkList;
这段代码定义了一些宏和结构体类型,具体解释如下:
- `#define MAXSIZE 1000` 定义了一个名为`MAXSIZE`的宏,它的值为1000,用来表示链表中数据域数组的最大长度。
- `#define SIZE 100` 定义了一个名为`SIZE`的宏,它的值为100,用来在输入文章时限制每行输入的字符数不超过100。
- `#define OVERFLOW -1` 定义了一个名为`OVERFLOW`的宏,它的值为-1,用来表示函数执行失败或出现异常的情况。
- `#define OK 1` 定义了一个名为`OK`的宏,它的值为1,用来表示函数执行成功的情况。
- `#define ZERO 0` 定义了一个名为`ZERO`的宏,它的值为0,用来表示数值为0的情况。
- `typedef char DataType;` 定义了一个名为`DataType`的类型别名,它表示链表中数据域的数据类型为`char`。
- `typedef int Elemtype;` 定义了一个名为`Elemtype`的类型别名,它表示链表中节点指针的数据类型为`int`。
- `typedef struct node`定义了一个名为`node`的结构体类型,它包含两个成员:一个数据域数组`data`和一个指向下一个节点的指针`next`。
- `LNode, * LinkList` 定义了两个类型别名,`LNode`表示结构体类型`node`,`LinkList`表示指向结构体类型`node`的指针类型。
综上所述,这段代码定义了一些宏和类型别名,用来方便地表示链表中的数据类型和节点类型。其中,宏定义用来定义常量,类型别名用来定义自定义的数据类型,可以简化代码的编写和阅读。
C语言实现链表十进制转十六进制 子函数声明是typedef char datatype; typedef struct { datatype data[Size]; datatype top; }SeqStack;
下面是一个将链表中的十进制数转换为十六进制数的函数实现,其中用到了上述提供的SeqStack结构体实现栈:
```
#include <stdio.h>
#include <stdlib.h>
#define Size 100
typedef char datatype;
typedef struct node {
int data;
struct node *next;
} Node, *List;
typedef struct {
datatype data[Size];
datatype top;
} SeqStack;
void InitStack(SeqStack *S);
int StackEmpty(SeqStack S);
int StackFull(SeqStack S);
void Push(SeqStack *S, datatype x);
datatype Pop(SeqStack *S);
int GetTop(SeqStack S, datatype *x);
void Conversion(List L);
int main() {
// 构造链表
List L = (List)malloc(sizeof(Node));
List p = L;
int num;
printf("Please input decimal numbers, end with -1:\n");
scanf("%d", &num);
while (num != -1) {
p->data = num;
p->next = (List)malloc(sizeof(Node));
p = p->next;
scanf("%d", &num);
}
p->next = NULL;
// 转换为十六进制输出
printf("The hexadecimal numbers are:\n");
Conversion(L);
return 0;
}
void InitStack(SeqStack *S) {
S->top = -1;
}
int StackEmpty(SeqStack S) {
return S.top == -1;
}
int StackFull(SeqStack S) {
return S.top == Size - 1;
}
void Push(SeqStack *S, datatype x) {
if (StackFull(*S)) {
printf("Stack is full!\n");
return;
}
S->data[++S->top] = x;
}
datatype Pop(SeqStack *S) {
if (StackEmpty(*S)) {
printf("Stack is empty!\n");
return '\0';
}
return S->data[S->top--];
}
int GetTop(SeqStack S, datatype *x) {
if (StackEmpty(S)) {
printf("Stack is empty!\n");
return 0;
}
*x = S.data[S.top];
return 1;
}
void Conversion(List L) {
SeqStack S;
InitStack(&S);
List p = L;
int num, remainder;
datatype hex;
while (p != NULL) {
num = p->data;
while (num) {
remainder = num % 16;
switch (remainder) {
case 10:
hex = 'A';
break;
case 11:
hex = 'B';
break;
case 12:
hex = 'C';
break;
case 13:
hex = 'D';
break;
case 14:
hex = 'E';
break;
case 15:
hex = 'F';
break;
default:
hex = remainder + '0';
break;
}
Push(&S, hex);
num /= 16;
}
while (!StackEmpty(S)) {
printf("%c", Pop(&S));
}
printf(" ");
p = p->next;
}
printf("\n");
}
```
其中,Conversion函数实现了链表中十进制数转十六进制的功能,具体过程是将每个节点的data字段转换为十六进制数后压入栈中,最后弹出栈中所有元素得到该节点的十六进制数表示。整体思路较为简单,需要注意的是可以使用switch语句将十进制数转为十六进制字符,而不必手动处理,这样代码可读性更好。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)