用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
首先你在了解栈的存取顺序:后进先出
根据这点你可以用单链表的头部插入方法实现栈的操作,具体代码就不写了,根据这个思想去写应该没问题