问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用C语言创建一个链栈,并进行操作

发布网友 发布时间:2022-04-26 14:59

我来回答

1个回答

热心网友 时间:2023-10-10 18:57

给题主一个包含建栈、入栈、出栈的代码吧

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

#define elemType int /*元素类型*/
#define status int
#define OVERFLOW -1
#define ERROR 0
#define OK 1

typedef struct sNode {
elemType data;
struct sNode *next;
} sNode;

typedef struct {
sNode *top; /*栈顶指针*/
int length; /*栈中元素个数*/
} *SLink;

/* 初始化 */
/* 操作结果:构造一个空的栈S */
void initStack (SLink *S) {
(*S) -> top = NULL; /*栈顶指针的初始值为空*/
(*S) -> length = 0; /*栈中元素个数为0*/ 
}

/* 入栈 */
/* 操作结果:栈S插入元素e */
status push (SLink S, elemType e) {
sNode *p;
    p = (sNode*)malloc (sizeof (struct sNode)); /*建立新节点*/
    if (!p) /*内存分配失败*/
        exit (OVERFLOW);
    p->data = e;
    p->next = S->top; /*链接到原来的栈顶*/ 
    S->top = p; /*移动栈顶指针*/ 
    ++S->length; /*栈的长度增加*/
    
    return OK;
}

/*出栈*/
/* 操作结果:删除栈S栈顶元素,并由e返回其值 */
status pop (SLink S, elemType *e) {
sNode *q;
if (!S->top)
        return ERROR;
    else {
*e = S->top -> data; /*返回栈顶元素*/ 
        q = S->top;
        S->top = S->top -> next; /*修改栈顶指针*/
        --S->length; /*栈的长度减少*/
free (q); /*释放被删除的元素空间*/ 
return OK;
    }
}

/* 输出栈 */
status stackPrint (SLink S) {
sNode *p = S->top; /* p指向栈顶 */
while (p!=NULL) {
printf ("%d\t",p->data);
p = p->next;
}
putchar ('\n');
return OK;
}

int main (void) {
SLink S;
elemType e;
elemType a=1,b=2,c=3,d=4;

initStack (&S);

/*入栈若干元素*/
push (S, a);
push (S, b);
push (S, c);
push (S, d);

puts ("入栈4个元素,此时栈内容为:");
stackPrint (S); 

/*出栈*/
pop (S, &e);

puts ("出栈1个元素,此时栈内容为:");
stackPrint (S);

getch (); /*屏幕暂留*/
return 0 ;
}

运行结果

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 嘴唇上有黑印用蜜蜡和棉线去除了胡须 C语言数据结构实现链栈的入栈、出栈、删除与插入 “不可约的马尔可夫链”通俗的将是什么意思? 苹果手机怎么下载安装平安app? 怎么命名碳原子数相同的碳链?要举例,并给分子结构图 区块链是什么意思?用通俗易懂的语言,,谢谢 平安app退保的步骤 支付宝里余额有一笔备用1000元免费用一个月可以借用吗? 农业银行消费明细怎么查询 如何让女生自动给你发信息? 怎么才能让女生对自己敞开心扉呢? 怎么才能让一个女生快速爱上你? 和女孩怎么聊天才能让她喜欢上你 华为手机实用性价比高排名 怎么让女生对你有好感? 如何添加一个不怎么爱加陌生人微信心仪女生的微信,让她接受我。验证的时候我该说什么才能更有说服力。 怎么才能从屌丝变男神?让女生主动来加你微信。 向女生要微信,女生不给,请问大家怎么才能够让自己加上女生的微信? 我想加一个女生微信,但是她不加陌生男人,怎么才能让她加我?验证消息怎么发? 华为平板2g内存能玩什么游戏? 小米平板2 2G内存够用吗 链条规格名称38.4VB是什么含义? 聚合酶链反应的反应体系 求编程高手用c语言编写链栈完整源代码 关于大学学的数据结构链栈的问题 关于大学学的数据结构链栈的问题·,存储结构是类(数据元素,后继指针)附加头结点,参数传递方式是当前对象 什么是iptables规则链? 如何用c语言实现单链表的逆置 速冻饺子怎么做煎饺,你真的不知道 在什么地方可以找到更多好看的图片,高清的 在哪可以下载点好看的图片? 超喜欢龙族幻想绘梨衣,哪里可以下载绘梨衣的高清壁纸? 谁能给个下载高清图片的地址? SD卡提示格式化错误是什么意思?还能用吗? 内存卡格式化错了怎么修复 你好,我的照相机存储卡显示存储卡错误,格式化时显示格式化错误怎么回事 照相机内存卡链接电脑出现格式化错误,要怎办请速回... 脸小,额头宽,头大的女生适合什么样的发型 脸小但额头大的女生适合什么发型? 我女生脸小额头大应该弄什么发型好? 大额头脸小女生适合什么发型 小脸女生时尚发型