酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

请编写c程序,利用栈的顺序存储方式实现下列功能使代码正确运用: 1. 编写功能菜单程序; 2. 实现栈的初始化、入栈、出栈、取栈顶元素、遍历栈等操作; 3. 实现利用栈的操作实现数制转换问题 要求: 4. 根据屏幕菜单的选择,进行顺序栈的初始化、入栈、出栈、取栈顶元素、遍历栈的操作,并在入栈、出栈操作后输出栈中的元素,出栈和取栈顶元素后要输出栈顶元素的值;最后在屏幕菜单中选择0,即可结束程序的运行。 5. 栈中存储的数据在键盘上输入,栈中存储的数据类型定义为字符串,入栈的数据为每个小组同学的学号,把自己的学号放在栈顶,出栈和取栈顶元素后要把栈顶自己的学号输出出来。 6. 栈的最大存储空间用常量定义,每个算法前要给出适当的注释说明,程序中相应的位置加入输入输出提示语句。 4.数制转换问题中,转换的数值和需要转换的进制数在函数的参数中进行设置

以下是一个使用 C 语言实现栈的顺序存储,并完成上述功能的程序示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_SIZE 100 // 定义栈的最大容量 // 定义栈结构体 typedef struct { char *data[MAX_SIZE]; // 存储栈元素的数组 int top; // 栈顶指针 } Stack; // 初始化栈 void initStack(Stack *s) { s->top = -1; // 初始化栈顶指针为 -1 } // 判断栈是否为空 int isEmpty(Stack *s) { return s->top == -1; } // 判断栈是否已满 int isFull(Stack *s) { return s->top == MAX_SIZE - 1; } // 入栈操作 void push(Stack *s, char *element) { if (isFull(s)) { printf("Stack is full. Cannot push.\n"); return; } s->top++; s->data[s->top] = element; printf("Pushed: %s\n", element); } // 出栈操作 char *pop(Stack *s) { if (isEmpty(s)) { printf("Stack is empty. Cannot pop.\n"); return NULL; } char *element = s->data[s->top]; s->top--; printf("Popped: %s\n", element); return element; } // 获取栈顶元素 char *peek(Stack *s) { if (isEmpty(s)) { printf("Stack is empty.\n"); return NULL; } return s->data[s->top]; } // 遍历栈 void traverseStack(Stack *s) { printf("Stack elements: "); for (int i = 0; i <= s->top; i++) { printf("%s ", s->data[i]); } printf("\n"); } // 数制转换函数 void convertNumberSystem(int number, int base) { Stack s; initStack(&s); while (number!= 0) { int remainder = number % base; char digit; if (remainder < 10) { digit = remainder + '0'; } else { digit = remainder - 10 + 'A'; } char *temp = (char *)malloc(sizeof(char) * 2); temp[0] = digit; temp[1] = '\0'; push(&s, temp); number /= base; } printf("Converted number in base %d: ", base); while (!isEmpty(&s)) { printf("%s", pop(&s)); } printf("\n"); } // 显示菜单 void displayMenu() { printf("1. Initialize Stack\n"); printf("2. Push\n"); printf("3. Pop\n"); printf("4. Peek\n"); printf("5. Traverse Stack\n"); printf("6. Number System Conversion\n"); printf("0. Exit\n"); } int main() { Stack s; int choice; char element[100]; do { displayMenu(); printf("Enter your choice: "); scanf("%d", &choice); switch (choice) { case 1: initStack(&s); printf("Stack initialized.\n"); break; case 2: printf("Enter element to push: "); scanf("%s", element); push(&s, element); break; case 3: pop(&s); break; case 4: printf("Top element: %s\n", peek(&s)); break; case 5: traverseStack(&s); break; case 6: int number, base; printf("Enter the number to convert: "); scanf("%d", &number); printf("Enter the base to convert to (2 - 16): "); scanf("%d", &base); if (base >= 2 && base <= 16) { convertNumberSystem(number, base); } else { printf("Invalid base. Please enter a base between 2 and 16.\n"); } break; case 0: printf("Exiting...\n"); break; default: printf("Invalid choice. Please try again.\n"); } } while (choice!= 0); return 0; } ``` [2024-10-29 17:08:55 | AI写代码神器 | 1116点数解答]

相关提问