这个算法我知道,但是我主要不知道要怎么组织用具体数据来实现它们的插入和删除,我觉得知道算法后要真正把它写清楚还是很难!
这个算法我知道,但是我主要不知道要怎么组织用具体数据来实现它们的插入和删除,我觉得知道算法后要真正把它写清楚还是很难!
算法?!怎么会用到具体数据来实现呢?算法是用语言来实现的吧?!
#include <malloc.h>
#include <stdio.h>
/*定义栈中的节点*/
typedef struct Node{
int nodeData;
struct Node *next;
}stackNode;
/*定义指向栈顶的指针与记录元素个数的变量*/
typedef struct{
stackNode *top;
int numbers;
}stackModel;
stackModel *p;
/*初始化栈*/
void initialize(stackNode *head){
head = NULL;
p->top = head;
p->numbers = 0;
}
/*元素进栈*/
void push(int node,stackNode *head){
stackNode *temp;
temp = (stackNode *)malloc(sizeof(stackNode));
temp->nodeData = node;
if(head==NULL)
{
head = temp;
temp->next = NULL;
}
else{
temp->next = head;
head = temp;
}
p->top = head;
p->numbers ++;
}
/*元素出栈*/
void pop(stackNode *head){
if(p->numbers <= 0)
{
printf(" the stack is empty!");
}
else{
head = head->next;
p->top = head;
p->numbers --;
}
}
main()
{
stackNode *head;
stackNode *temp;
initialize(head);
push(2,p->top);
push(2,p->top);
push(4,p->top);
pop(p->top);
printf("栈中元素个数: %d\n",p->numbers);
temp = p->top;
while(temp!=NULL)
{
printf("%d\n",temp->nodeData);
temp = temp->next;
}
}
此栈是用链表实现的,其出栈与入栈以及怎么被调用基本上如上所示。原理其实很简单,只要把栈看成特殊的链表,再用一个指针指向连头,所有的操作从该指针指向的链头操作就行了!
还要忠告你一句,学习要善于思考,不要靠着别人把所有的东西一步一步地教给你,这是不可取的。