实验内容:
1.采用链式存储实现栈的初始化、入栈、出栈操作。
2.采用顺序存储实现栈的初始化、入栈、出栈操作。
3.采用链式存储实现队列的初始化、入队、出队操作。
4.采用顺序存储实现循环队列的初始化、入队、出队操作。
5.在主函数中设计一个简单的菜单,分别测试上述算法。
6. 利用栈实现数制转换(将一个十进制数转换成d进制数)。
1.链式栈(相当于一个先入后出 的单链表)
#include <stdio.h>
#include <stdlib.h> ///链式栈
typedef struct node
{
int data;
struct node *next;
}Node,*Linklist;
Linklist Createlist()
{
Linklist p;
Linklist h;
int data1;
scanf("%d",&data1);
if(data1 != 0)
{
h = (Node *)malloc(sizeof(Node));
h->data = data1;
h->next = NULL;
}
else if(data1 == 0)
return NULL;
scanf("%d",&data1);
while(data1 != 0)
{
p = (Node *)malloc(sizeof(Node));
p -> data = data1;
p -> next = h;
h = p;
scanf("%d",&data1);
}
return h;
}
void Outputlist(Node *head)
{
Linklist p;
p = head;
while(p != NULL )
{
printf("%d ",p->data);
p = p->next;
}
printf("\n");
}
void Freelist(Node *head)
{
Node *p;
Node *q = NULL;
p = head;
while(p != NULL)
{
q = p;
p = p->next;
free(q);
}
}
int main()
{
Node *head;
head = Createlist();
Outputlist(head);
Freelist(head);
return 0;
}
2.顺序栈