终于用C实现了我的堆栈链表,但是有比我更简单的方法吗?
我终于建立了我的堆栈链表。而且效果很好。 但我想知道是否有比我更简单、更短的方法 我觉得。。我的方法不是实现堆栈链表的最佳方法 最好的方法:简单和简短 我的全部代码如下终于用C实现了我的堆栈链表,但是有比我更简单的方法吗?,c,data-structures,linked-list,stack,C,Data Structures,Linked List,Stack,我终于建立了我的堆栈链表。而且效果很好。 但我想知道是否有比我更简单、更短的方法 我觉得。。我的方法不是实现堆栈链表的最佳方法 最好的方法:简单和简短 我的全部代码如下 #include <stdio.h> #include <stdlib.h> typedef int element; typedef struct node{ element data; struct node* next; }node; node* head = NULL; void pu
#include <stdio.h>
#include <stdlib.h>
typedef int element;
typedef struct node{
element data;
struct node* next;
}node;
node* head = NULL;
void push(element data){
node* temp = (node*)malloc(sizeof(node));
if(temp==NULL)
printf("out of memory");
else{
temp->data = data;
temp->next = head;
printf("push(%d)\n", temp->data);
head = temp;
}
}
void pop(){
node* temp;
if(head==NULL) return;
temp = head;
head = temp->next;
free(temp);
}
void printStack(){
node* temp = head;
while(temp!=NULL){
printf("%d\n", temp->data);
temp = temp->next;
}
}
void is_Empty(){
if(head==NULL){
printf("EMPTY\n");
}
else{
printf("NOT EMPTY\n");
}
}
void main() {
push(10);
push(20);
push(30);
push(40);
printStack();
is_Empty();
}
#包括
#包括
typedef int元素;
类型定义结构节点{
元素数据;
结构节点*下一步;
}节点;
node*head=NULL;
无效推送(元素数据){
node*temp=(node*)malloc(sizeof(node));
if(temp==NULL)
printf(“内存不足”);
否则{
温度->数据=数据;
温度->下一步=头部;
printf(“推送(%d)\n)”,临时->数据;
压头=温度;
}
}
void pop(){
节点*温度;
if(head==NULL)返回;
温度=水头;
头=温度->下一步;
免费(临时);
}
void printStack(){
节点*温度=头部;
while(temp!=NULL){
printf(“%d\n”,临时->数据);
温度=温度->下一步;
}
}
void是空的(){
if(head==NULL){
printf(“空\n”);
}
否则{
printf(“非空\n”);
}
}
void main(){
推(10);
推(20);
推(30);
推(40);
printStack();
是空的吗;
}
看起来不错,但通常在弹出时,您希望返回删除的元素。另外,我还有一个释放堆栈的函数,这样,如果您想要创建一个抽象级别,人们仍然可以正确地管理他们的内存 看起来不错,但通常在弹出时,您希望返回删除的元素。另外,我还有一个释放堆栈的函数,这样,如果您想要创建一个抽象级别,人们仍然可以正确地管理他们的内存 这在@Mat上会更好。我加入了那个网站,只是想上传我的问题。但它告诉我,“你只能每40分钟发布一次”。是因为我已经在stackoverflow上发布了吗?可能是的。请稍等。@Mat谢谢。void main()
不是好的C语言,除非您专门在Windows上工作。在C(但不是C++)中,函数定义(如void printStack(){…}
不提供函数的原型-您需要void printStack(void){…}
来提供原型。如何获得堆栈顶部的值?您的pop()
函数没有返回值-似乎没有办法获取要使用的值。你在isEmpty()
中将I/O与测试混合在一起-从长远来看,这不是一个好主意(意思是“当你真正使用此代码时”)。这在@Mat上会更好。我加入了该网站,只是试图上传我的问题。但它告诉我,“你只能每40分钟发布一次”。是因为我已经在stackoverflow上发布了吗?可能是的。请稍等。@Mat谢谢。void main()
不是好的C语言,除非您专门在Windows上工作。在C(但不是C++)中,函数定义(如void printStack(){…}
不提供函数的原型-您需要void printStack(void){…}
来提供原型。如何获得堆栈顶部的值?您的pop()
函数没有返回值-似乎没有办法获取要使用的值。您在isEmpty()
中将I/O与测试混合在一起-从长远来看,这不是一个好主意(意思是“当您真正使用此代码时”)。