用C语言中的链表如何实现栈?
发布网友
发布时间:2022-05-12 22:50
我来回答
共3个回答
热心网友
时间:2023-10-28 03:02
struct point{
point *last;
int data;
};
int main(){
cin >> n;
point *top = NULL;
for(int i = 1 ; i <= n ; i++){
scanf("%d" , &x);
point *p = new point;
p -> data = x; //入栈
p -> last = top;
top = p; // 将头指针指向最后一个
}
while (top != NULL){//判断栈是否为空
cout << top -> data << endl; //输出栈顶元素
top = top -> last; //将头指针向下移动
}
}追问p -> last = top;
top = p; // 将头指针
这两句不太明白?
能在说说吗?谢谢!
热心网友
时间:2023-10-28 03:03
/* 单向链表的建立 */
typedef struct student
{ /* int data;*/ /* 数据自己写*/
struct als *next;
}STUDENT,*LinkList;
LinkList Creat_List(int listlenght) /* 建立一个长度为 listlenght 的单向链表 */
{ LinkList head,p1,p2;
int list=0,i;
p1=p2=(STUDENT*)malloc(sizeof(STUDENT));
head=NULL;
for(i=1;i<=listlenght;i++)
{ list=list+1;
if(list==1) head=p1;
else p2->next=p1;
p2=p1;
p1=(STUDENT*)malloc(sizeof(STUDENT));
}/* for */
p2->next=NULL;
return head;
}
main()
{ LinkList head;
int n=10;
head=Creat_List(n); /* 建立一个长度为10的链表*/
}
热心网友
时间:2023-10-28 03:03
首先你在了解栈的存取顺序:后进先出
根据这点你可以用单链表的头部插入方法实现栈的操作,具体代码就不写了,根据这个思想去写应该没问题
怎样用C语言写出对栈进行的五种运算:push()、pop()、top()、empty...
这是我用链表写的:include <stdio.h> include <stdlib.h> typedef struct node { int x;struct node *next;}Node;typedef struct stack { Node *top;}Stack;void InitStack(Stack *s){ s->top=NULL;} int IsEmpty(Stack *s){ if(s->top==NULL)return 1;else return 0;} void PushSt...
C语言数据结构实现入队出队入栈出栈操作代码怎么写?
栈肯定用链表实现起来灵活点,入栈的时候,把新的节点直接直接放到头节点之后,已有的节点全部往后移了一个位置,然后出栈的时候,每次取出头节点之后的那个节点,头节点指到下一个节点。这样就实现了“后进先出”。代码自己写吧,练习练习。
急!!!c语言高手进!
第一个很简单,就是实现数组的移动而已 也就是任意位置后面的数据前移一个位置或者后移一个位置的算法 这个就是循环而已 这个两个方式,一个是在原来的基础上做 插入的话,从数组后面开始循环后移,直到插入的地方插入 删除直接冲那个位置用后面的数据覆盖即可 第二个是用新的数组,复制的插入位置,插...
C语言中的堆条件是什么?
在实际编程中,可以通过两种方式来实现:使用数组的形式来实现栈,这种栈也称为静态栈;使用链表的形式来实现栈,这种栈也称为动态栈。相对于栈的“先进后出”特性,堆则是一种经过排序的树形数据结构,常用来实现优先队列等。假设有一个集合 K={k0,k1,…,kn-1},把它的所有元素按完全二叉树的...
求教:C语言怎么申请一个栈,栈的容量有多大
栈可以直接用数组实现的,也可以用链表实现,本质上就是可以在一端点插入和删除的数据结构 数组和链表都是非常适合的媒介 数组实现就用malloc申请一块内存,当数组用即可 链表就是头插和头删两种操作,每次也用malloc申请一个节点的内存 (频繁malloc是非常有失效率的,建议一般情况用数组版,或者合理使用...
c语言,置空栈, 1,是否要把每一个节点的内存释放掉 2,置空后我的链表头...
1. 你采用单向链表实现Stack,那么置空Stack是需要遍历每个结点,然后将其释放掉的。否则将会在内存中遗留许多的孤儿结点。2. 建议创建一个哨兵结点(貌似目前的数据结构的书没有讲这个了),作为你整个链接的特殊头结点。整个Stack始终保留这样的一个哨兵结点,当空栈时即只保留这一个结点。同样的,...
C语言中链表与队列有很么区别?
链表是一种数据结构,而队列是一种抽象的概念,就像栈一样。船是一个比较抽象的概念,具体实现有木船、铁船等等。队列好比是船,链表好比是造船的材料。队列可以用链表实现,也可以用动态数组实现,这个抽象的概念可以用各种具体的数据结构实现。SQQUEUE的第一个元素elemtype *elem;其实是指向了一个数组,...
用C语言写的程序,从文件读取数据以链表结构存储(数据到3就结束了),为 ...
判断下最后一行是不是你写的时候写错了。fscanf应该没读到真确的name和phonenum。
在C语言中,什么是链表呀?
链表可以在多种编程语言中实现。像Lisp和Scheme这样的语言的内建数据类型中就包含了链表的存取和操作。程序语言或面向对象语言,如C,C++和Java依靠易变工具来生成链表。编辑本段特点 线性表的链式存储表示的特点是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)...
C语言程序设计 链表的综合操作(急)
用C语言编写一个程序,通过链表的建立、输出、删除、插入等基本操作,实现学生成绩管理,从键盘输入学生信息,学生信息用结构体表示,包括学号、姓名、三门课成绩:语文、数学、英语。二、课程设计目标和要求必做:1. 插入功能:在学生链表中插入一个学生的信息,要求插入后仍然保持学号有序。2. 删除功能:要求输入指定的...