这是c语言数据结构下面的一段代码。好多困惑啊,求解?

作者&投稿:徒临 (若有异议请与网页底部的电邮联系)
C语言,数据结构问题,求解!!~

太模糊,看不到

上面一个 要把s->top值赋值,并带回主调函数
所以需要指针
否则 不用指针,s.top=0 只是改变形参,不会影响实参。

而下面一个 不需要赋值,只是判断,这样传值就可以了,不需要传地址。 也就不用*了。

答问题1:struct 表明它是结构体,
#include<stdio.h>
typedef struct {
elementype data;
struct node *next;
}node,*linklist;
这样定义后,node 就成了新的结构体这样的类型,(struct node)==(int)*在作用上但是这里用了typedef,那么在下次定义后,就可以直接用node=struct node,对于上面的结构体中运用了struct node *next;,可能就是因为那个结构体还没有完全定义,所以用了那样的形式。

答问题2:『int Initlist_l(linklist &l) /*疑问2:linklist &l 这个参数的数据类型linklist是什么,上面的一个struct的别名不是定义为了*linklist吗??好困惑啊? &是引用的意思吧?*/』

括号表示那是参数呀,int Initlist_l(linklist &l) 这是一个函数。上面的传引用这它的意思就是把那个变量的地址给它,就如inilial(int *a)差不多,一般在c++中才有那种写法,反正我在c中不用那种写法。他们不同在于调用实际的参数不一样。

答问题3:『if(l=(node*)malloc(sizeof(node))==NULL)/*疑问3:这个强制数据类型转换(*node)木有定义过啊,上面的一个别名是node,这样写是为啥?*/』

对,是强制类型转换。她的意思是返回node类型的地址,所以用(node*)

答问题4:int Getelem_l(linklist l,int i,elementype &e)/*疑问4:linklist这个数据和上面的别名linklist *有什么关系吗?为啥这么写?*/

这里面的linklist l,I是变量名。肯定有区别呀,比如 int ;和 int *:你说有区别没?一个是变量,一个是指针变量。

1、typedef用来为复杂的类型来定义简单的别名,故node表示该结构体类型,而linklist则表示其指针类型,如果你知道指针的定义方法的话,就能看懂了;

2、如上所述,linklist表示结构体的指针类型,加上引用符号&,则表示传进来的参数是指针变量的引用类型,这个是C++的写法,C里面没有的;

3、既然node是结构体类型的别名,那么(node *)就表示其指针型了,等效于linklist;

这几点明白了,其它的就应该懂了。

疑问1:这个结构体后面的node, 和 *linklist分别是struct的别名吗?
是自定义的struct类型的名字
疑问2:linklist &l 这个参数的数据类型linklist是什么,上面的一个struct的别名不是定义为了*linklist吗??好困惑啊? &是引用的意思吧?
linklist 就是前面定义的struct 的指针类型。那个语法意思是类型linklist 是指向 struct {...}的指针。&是取地址


高手解答 c语言编写数据结构实例 下面的代码看不懂,高手解答
while(i<=L.length&&!compare(*p++,e))++i;这个循环就是扫描数组找满足关系的元素的一个过程,循环条件不用解释了吧,一个是循环的边界判断条件,一个是已知的compare()函数,也就是循环的结束条件;if(i<=L.length)这个if语句的判断条件是i<=L.length,表示的是上边的循环式从中间跳出的,也...

约瑟夫环(c语言版数据结构) 下面是约瑟夫环的代码,跪求大神帮忙写出代 ...
include <stdlib.h> include <stdio.h> include <Math.h> typedef struct node {int number;int password;struct node* next;}Node,*Linklist;Linklist CreateLinklist(int amount){int i;Node *s=NULL,*r=NULL;Linklist L=NULL,R=NULL;for(i=0;i<amount;i++){ s=(Node*)malloc(size...

C语言:数据结构(写出下边这个中缀表达式的后缀表达式)
然后,你可以这样看,在这个表达式中,按照运算法则,应该先算(-B) (这里你的表达式里应该是少了个括号),所以就是“B-”在一起,然后再把(-B)的结果乘以A,就变成了 AB-*(因为是A*(-B),所以A在B前,而“*”在“-”的后面),然后将上面的结果+C,同样的道理分析,自然就是:AB-*C+...

用C语言实现数据结构时需要哪些头文件?
1、stdio.h,这个是用来输入输出。动态内存分配函数要用到的,所以要包含malloc.h,其他的还可能用到字符(串)处理函数(需包含string.h头文件)、数学函数(需包含math.h),包含什么头文件主要看i你想用这些数据结构实现什么功能,用到什么函数。2、C语言常用头文件:ALLOC.H 说明内存管理函数(分配...

关于c语言中的数据结构基本操作,为什么最后都要返回一个值?
我在学严蔚敏的数据结构,我发现每一种数据结构里的基本操作都定义为status型(typedefintstatus)然后最后操作成功都要return一个值,这样做有什么意义啊?我不明白,为什么不直接定... 我在学严蔚敏的数据结构,我发现每一种数据结构里的基本操作都定义为status型(typedef int status)然后最后操作成功都要return一个值,...

关于数据结构算法,谁能帮我用C语言写下?谢谢
typedef struct QNode \/* 结点结构 *\/ { QElemType data;struct QNode *next;}QNode,*QueuePtr;typedef struct \/* 队列的链表结构 *\/ { QueuePtr front,rear; \/* 队头、队尾指针 *\/ }LinkQueue;Status visit(QElemType c){ printf("%d ",c);return OK;} \/* 构造一个空队列Q *...

数据结构C语言,下面程序错在哪里?
首先问一下你用的什么编译器,不同的编译器语法有些不一样 建议不要大量混用C和C++的语法,这让程序可读性变得很差 语法错误这里先不说 主要是 main里面的处理有问题,在入列的判断和计数出了问题,所以出列就错了 int main(){ initqueue();initstack();char a,x,y;int b=0,c;while(a!='...

用C语言和数据结构编写一个简单的程序(求源代码)
\/*使用递归,理论上说可以对任意多位数组合,但位数太多了,可能发生堆栈溢出.以下程序在VC++6.0中编译通过.\/ include <stdio.h> include <string.h> define MAX_NUMBER 6 \/\/修改这个参数来允许最大的位数,现设为6位 void GetZhe (const char * preStr,const char * strNum){ char newPre...

关于数据结构的问题,用C语言描述
符号表:一种用于语言翻译器中的数据结构 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 其他类似问题 2011-06-26 关于数据结构的问题,用C语言描述 2014-12-25 关于用C语言描述数据结构的问题 2011-03-17 数据结构的问题(C语言描述的) 4 2009-11-01 用c语言描述数据结构的问题 2 2009-04-21...

c语言数据结构 pc—〉next=pa:将pa所指结点移到pc下个结点 pc=pa是什...
pc相当于是C链表的工作节点,一开始pc初始化为C链表的头结点LC,而pa和pb是A链表,B链表的工作节点,通过比较pa,pb指向节点的元素大小来决定是把pa指向的节点连接到pc后面还是pb指向的节点连接到pc后面,所以就有pc->next=pa或者pc->next=pb。然后pc=pa和pc=pb其实都等价于pc=pc->next,使新...

吴堡县17395526719: 用c语言编写数据结构实例中有下面的代码,那个!是什么意思.整个语句看不懂,高手速速解答. -
訾剑特夫: 在C语言中,!的意思是否,比如说1!=2就是1≠2的意思.当!符号用在一个变量变量并嵌套在if中时.if(!newbase)意思就是当newbase为空或者为假时退出.假如newbase是一个char,char newbase=NULL;此时,!newbase为真,就执行退出语句.但是当char newbase=abc时,newbase为真,!newbase就为假,此时不执行退出语句.这个符号经常在C语言中用作条件语句的.很简单,就是否的意思.!真就为假,!假就为真 希望对你有帮助~

吴堡县17395526719: 请解释数据结构中一段C语言代码
訾剑特夫: status在C语言中表示状态.一般定义的LinkList是指单链表类型,也可定义为lklist.ElemType的意思是一个数据类型,这里表示地址类型.那些判断p的语句是表示p存在或不存在.不会出现OK,因为这不是标准的C语言,这是一套伪代码,属于类C语言,就像NS图一样,是不能执行的.这些代码只是讲述单链表用的.你理解这些代码的时候应该着重理解程序表达的意思,而非程序本身. -------------------- ©原创回答团成员:TeaError 解答.

吴堡县17395526719: C语言(数据结构)下面这段代码为什么输入信息跳出do - while循环后,学号(Num)为什么会输出“#”? -
訾剑特夫:#include <stdio.h> #include <string.h> #include <stdlib.h> struct Student {char Num[10]; //字符型学号char Name[10]; //字符型姓名char Sex[1]; //字符型性别double English; //双精度存储英语成绩double Sjjg; //双精度存储数据结构成绩...

吴堡县17395526719: C语言typedef定义结构体数组,下面这段代码是什么意思? -
訾剑特夫: 含义是:定义一个类型别名adjlist,这个类型是一个结构体类型为元素类型的长度为Vnum的数组,这个结构体类型的元素是int vertex和arcnode* firstarc.操作方法如下:1、首先在电脑中,打开Microsoft Visual Studio软件.2、接着新建C++ 控...

吴堡县17395526719: 高手解答 c语言编写数据结构实例 下面的代码看不懂,高手解答 -
訾剑特夫: while(i ++i; 这个循环就是扫描数组找满足关系的元素的一个过程,循环条件不用解释了吧,一个是循环的边界判断条件,一个是已知的compare()函数,也就是循环的结束条件;if(i这个if语句的判断条件是iStatus(*compare)(ElemType,ElemType))是个函数指针;

吴堡县17395526719: C语言,数据结构(迷宫),我菜鸟一个,下面一段代码我是想输出随机迷宫,可是为什么输出不了?求大神 -
訾剑特夫: 改好了#include <stdio.h>#include <time.h>#include <stdlib.h>#define ROW 10#define COL 10 int maze[ROW][COL]; void main() { int i,j,a,b; for ( i = 0; i <ROW ; ++i) { maze[i][0]=1; maze[i][COL-1]=1; } for (j = 0; j < COL; ++j) { maze[0][j]=1; maze[...

吴堡县17395526719: C语言下面有一段代码,求解释不知道什么意思,大神求解释啊 printf("%c",*(str+6)); -
訾剑特夫: 输出't'. *(str+6)等于str[6].学指针,要有一些稍底层的概念作为理解基础,下面我粗略的说下 什么是变量,什么是变量地址C的变量是什么?你可以认为变量是内存中一块区域,一个单元,在内存中都有个地址.变量就像房间,变量的地址就...

吴堡县17395526719: 求数据结构(C语言版)建立二叉树的代码~~急~~谢谢了 -
訾剑特夫: BT.H文件 #include <stdio.h> #include <malloc.h> #include <conio.h> #define TRUE 1 #define FALSE 0 #define ERROR 0 #define OK 1 #define Stack_Size 50 #define NUM 50 #define MAXSIZE 50 //队列的最大长度 //定义二叉树 typedef char ...

吴堡县17395526719: 求一段C语言的 队列 数据结构代码,能用的就加分啊! -
訾剑特夫: #ifndef QUEUE_H#define QUEUE_H#include <iostream>using std::cout;using std::endl;using std::ostream;template <class Type>class Queue { friend ostream & operator<< (ostream &, const Queue<Type> &);public: static const int DefaultSize; Queue...

吴堡县17395526719: C语言 - 数据结构 - 队列 -
訾剑特夫: //首先说明:这里的队列是作为循环队列来使用的 //插入一个元素b到队列 void insert(sq_queue *q,queue b) { //如果队列已满则退出 if((q->rear+1)%maxqsize==q->front) exit(1); //未满则将b插入到对尾,同时将对尾赋值为下一个空元素位置 q->...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网