1) 1)链栈结点类型定义为: typedef重复定义 struct node { int

扫二维码下载作业帮
2亿+学生的选择
下载作业帮安装包
扫二维码下载作业帮
2亿+学生的选择
数据结构算法设计题和2个计算题(重分)算法设计题1 设带表头结点的双向链表的定义为typedef int ElemTyp*:typedef struct dnode{file://双向链表结点定义ElemType data:file://数据struct dnode*lLink*rLink:file://结点前驱与后继指针DblNodetypedef DblNode*DblList:_____________试设计一个算法,改造一个带表头结点的双向链表,所有结点的原有次序保持在各个结点的右链域rLink中,并利用左链域lLink吧所有结点按照其值从小到大的顺序连接起来.计算题1设有一个顺序贱S,元素s1,s2.s3.s4.s5.s6依次进贱,如果6个单元的出贱顺序为s2,s3,s4,s6,s5,s1,则顺序贱的容量至少应为多少?2一颗具有n个结点的理想平衡二叉树(即除离根最远的最底层外其他各层都是满的,最底层有若干结点)有多少层?若设根结点在第0层,则树的高度h如何用n来表示(注意n可能为0)?
扫二维码下载作业帮
2亿+学生的选择
1:至少为3进栈:s1,s2,s3,s4,s5,s6出栈:s2,s3,s4,s6,s5,s1栈内元素个数:1,2,1,2,1,2,1,2,3,2,1,02:2^0+2+2^2+2^3+……+2^(h-1)=2^h-1》》[2^h-1]
为您推荐:
其他类似问题
噢,看不懂
扫描下载二维码链栈(完整可运行代码)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
链栈(完整可运行代码)
&&1)链栈结点类型定义为:
typedef struct node
struct node *
2)编写进栈函数push
3)编写出栈函数pop
4)编写main函数,首先建立一空链栈;调用进栈函数,将从键盘输入的数据元素逐个进栈,输入0结束;显示进栈后的数据元素.调用两次出栈函数,显示出栈后的数据元素。
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢软基第三次上机实验报告;EX3.1;一、程序流程说明;1)链栈结点类型定义为:;typedefstructnode;;structnode*;}node_;2)编写进栈函数push;3)编写出栈函数pop;4)编写main函数,首先建立一空链栈;;调用进栈函数,将从键盘输入的数据元素逐个进栈,输;二、程序代码;#inclu
软基第三次上机实验报告
一、 程序流程说明
1) 链栈结点类型定义为:
typedef struct node
struct node *
2) 编写进栈函数push
3)编写出栈函数pop
4)编写main函数,首先建立一空链栈;
调用进栈函数,将从键盘输入的数据元素逐个进栈,输入0结束;显示进栈后的数据元素;
调用两次出栈函数,显示出栈后的数据元素。
二、 程序代码
#include&stdio.h&
#include&stdlib.h&
#define true 1
#define false 0
typedef struct node
struct node*
typedef struct
node_type*
int push(lstack_type*lp,int x)
node_type*p;
p=(node_type*)malloc(sizeof(node_type));
if(p!=NULL)
p-&data=x;
p-&next=lp-&
lp-&top=p;
void pop(lstack_type *lp)
node_type*p;
if(p==NULL)
lp-&top=lp-&top-&
node_type*print(node_type*head)
node_type*
while(temp!=NULL)
printf(&%d\t&,temp-&data);
temp=temp-&
void main()
lstack_type M,*
lp-&top=NULL;
printf(&Please input the data(end by '0'):\n&);
scanf(&%d&,&i);
while(i!=0)
push(lp,i);
scanf(&%d&,&i);
printf(&All data is:\n&);
print(lp-&top);
printf(&\n The first pop:\n&);
print(lp-&top);
} printf(&\n The second pop:\n&); pop(lp); print(lp-&top);
三、 测试数据
输入:1 2 3 4 5 6 7 8 9 0
输出:All data is:
9 8 7 6 5 4 3 2 1
The first pop is:
8 7 6 5 4 3 2 1
The second pop is:
7 6 5 4 3 2 1
四、 上机时遇到的问题
五、 实际运行结果
六、 心得体会
要熟悉栈的使用
一、 程序流程
1)顺序循环队列类型定义为:
#define N 20
typedef struct
int data[N];
int front,
2)编写循环队列出队函数dequeue
3)编写循环队列入队函数enqueue
4)编写函数:void aa(queue_type *q);
调用出对函数把队列q中的元素一一出对列,如果是负数直接抛弃;如果是正数,
则调用入队函数,插入到q的队尾。
5)编写main函数,首先建立一个队列,其中的数据元素为:{2, 3, -4, 6, -5, 8, -9, 7, -10, 20};然后调用aa函数,并将aa函数调用前后队列的数据元素分别输出到屏幕上。
二、程序代码
#include &stdio.h&
#define MAXNUM 20
#define true 1
#define false 0
typedef struct
int data[MAXNUM];
int front,
enqueue(queue_type *q,
if( (q-&rear+1)%MAXNUM == q-&front)
return(false);
q-&data[q-&rear]=x;
/*新元素入队尾*/
q-&rear=(q-&rear+1)%MAXNUM; /*移rear*/
return(true);
int dequeue(queue_type *q)
if(q-&rear==q-&front) /*判队列是否为空*/
printf(&queue is empty&);
return(0);
/*返回空值*/
q-&front=(q-&front+1)%MAXNUM;
return(q-&data[q-&front-1]);
void aa(queue_type *q)
int i,j=0,k;
i=dequeue(q);
while(j&10)
enqueue(q, i);
i=dequeue(q);
i=dequeue(q);
if(q-&front&q-&rear)
for(i=q-&i&MAXNUM-1;i++)
printf(&%d
&,q-&data[i]);
for(i=0;i&q-&i++)
printf(&%d
&,q-&data[i]);
for(i=q-&front-1;i&q-&i++)
printf(&%d
&,q-&data[i]);
void main()
queue_type M,*
int i,j,a[]={2, 3, -4, 6, -5, 8, -9, 7, -10, 20};
lp-&front=0;
lp-&rear=0;
for(i=0;i&10;i++)
enqueue(lp,a[i]);
printf(&调用函数前队列元素为:\n&);
for(i=0;i&10;i++)
printf(&%d
&,lp-&data[i]);
printf(&\n调用函数后队列元素为:\n&);
三、测试数据
调用前:2 3 -4 6 -5 8 -9 7 -10 20 调用后:2 3 6 8 7 20
四、上机遇到的问题
始终有点小错误没有消除
五、实际运行结果
三亿文库包含各类专业文献、幼儿教育、小学教育、应用写作文书、外语学习资料、生活休闲娱乐、软基第三次上机实验报告39等内容。 
 第三次实验报告模板_计算机软件及应用_IT/计算机_专业资料。操作系统实验报告,...实验要求 1、设计实验步骤; 2、将上机过程中出现的问题及解决方法写在实验报告...  软件安全第三次实验报告班级: 1、目标 (1) 了解 shellcode 注入原理 (2) 理解给出的弹出对话框的汇编代码 (3) 通过淹没静态地址来实现 shellcode 的...  U 王超 第三次上机实验报告_IT认证_资格考试/认证_教育专区。程序设计4函数与程序结构实验 一、实验目的 (1)熟练和掌握函数的定义、声明,函数调用与参数...  第三次上机作业实验报告_数学_自然科学_专业资料。学号:47 姓名:于...学号:47 姓名:于劭炜 第三次上机作业 1 学习目标 本次上机实习的...  MATLAB第三次上机实验报告_工学_高等教育_教育专区。MATLAB第三次上机实验报告 电子科技大学 电子工程 学院 标准实验报告 (实验)课程名称 MATLAB 与数值分析 学生...  暂无评价|0人阅读|0次下载|举报文档软基实验报告_电脑基础知识_IT/计算机_专业...(三)程序源代码 #define INFINITY 10000 /*无穷大*/ 40 #define MAX_VERTEX...  作为光束质量统 一比较的标准是理想Gauss 光束( 基模TEM00 ) , Gauss 光束有...第三次实验报告模板 暂无评价 2页 免费 第三次上机实验报告3 暂无评价 1页 ...  暂无评价|0人阅读|0次下载|举报文档 软基实验报告_计算机软件及应用_IT/计算机...并实现以下操作;A、初始化线性表;B、添加表 1 中的 记录;C、删除第三条...  暂无评价|0人阅读|0次下载|举报文档软件技术基础上机实验报告_工学_高等教育_教育...上的对应操作(包括创建、删除插入元素、遍历等),巩固强化 C 程序设计的基 本...& & & & 接着上一次的顺序栈,今天我记一下链栈,因为我也是刚学不久,有些地方也稍稍理解不了,所以,一起共勉。我会用我自己结合教材上画的图,争取跟代码一起结合,用文字和图最大化的解释代码,这样的话大家就可以很容易的懂了。在看本文之前,建议初学者们先看看书上的链栈的解释,这里我将不会再仔细的说明了。假如你先看书再来看文章,效果会很不错。废话不多说了,大神勿喷,有错误请在下方评论区指出,让我和后来的初学者们一起进步。
&# include&stdio.h&
# include&stdlib.h&//malloc free 的头文件 &或者用# include&malloc.h&
# define FALSE 0
# define TRUE 1
typedef struct node//定义节点
& & struct node *
typedef struct//定义一个链栈
& & stacknode * &//这是一个链栈的指针 就是一个箭头 名为top &专门指向一个有着数据域和指针域的类型节点
& &//计数器 记录链栈的元素个数
图示如下:
void init(linkstack * s);//初始化
int em(linkstack * s);//判断是否为空(链栈一般不会为满)
int push(linkstack * s,int a);//入栈
int pop(linkstack * s,int * a);//出栈
int ding(linkstack * s,int * a);//只取栈顶元素(不对栈有任何操作)
int length(linkstack * s,int *a);//取链栈长度
void init(linkstack * s)
& & s-&top=NULL;//该指针箭头指向为空
& & s-&count=0;//初始化时长度为零
图示如下:
int em(linkstack * s)
& & return (s-&top==NULL? TRUE:FALSE);
int push(linkstack * s,int &a)
& & stacknode * p=(stacknode *)malloc(sizeof(stacknode));//申请生成新节点
& & if(p==NULL)//申请不成功
& & & & return FALSE;
& & & & p-&data=a;//挂载
& & & & p-&next=s-&//新节点的指针域指向原栈顶节点
& & & & s-&top=p;//栈顶指针指向新节点
& & & & s-&count++;
& & & & return TRUE;
图示如下:
大家思考一下,上面三行代码的顺序不可以乱,这是为什么呢?
int pop(linkstack * s,int *a)
& & stacknode *//定义临时变量存储节点 & & & & & &我也挺想不通为啥要弄个临时节点
& & if(em(s))
& & & & return FALSE;
& & & & p=s-&//把节点赋给临时节点 & & //其实这时p与s-&top已经融为一体了(为栈顶取了新名字)
& & & & * a =p-&//将栈顶元素的值发送出去
& & & & s-&top=p-&
& & & & s-&count--;
& & & & free(p);//所以free(p)就是free(s-&top)
& & & & return TRUE;
图示如下:
int ding(linkstack * s,int * a)
& & if(em(s))
& & & & return FALSE;
& & & & * a=s-&top-&
& & & & return TRUE;
int length(linkstack * s)
& & return s-&
int main(void)
& & int a,b,c,d;
& & init(&s);
& & push(&s,1);
& & push(&s,12);
& & push(&s,15);
& & push(&s,124);
& & push(&s,237);
& & ding(&s,&a);
& & c=length(&s);
& & printf("栈顶元素为:%d\n链栈长度为:%d\n",a,c);
& & while(!em(&s))
& & & & pop(&s,&d);
& & & & printf("%d ",d);
& & return 0;
代码实现效果图:
以上就是C语言实现链栈的方法了,虽然可能以后我们用别的语言时不用自己再编写这些代码,但是基本的原理我们还是要懂的。有错误或者问题可以留言,谢谢。
阅读(...) 评论()

我要回帖

更多关于 typedef 定义函数指针 的文章

 

随机推荐