C语言链表输出,while(p)是什么意思?怎么判断完成输入了?

作者&投稿:上天 (若有异议请与网页底部的电邮联系)
while(p!=NULL)这个表达式什么意思?~

null表示所查询的数据在数据库没有数据
p!=null是指P有数据时
while(p!=null)指循环条件满足p有数据就执行

#include #include #include typedef int ElemType; /*单项链表声明*/ typedef struct PolynNode{ int coef; // 系数 int expn; // 指数 struct PolynNode *next; }PolynNode,*PolynList; /*位序(插表尾)输入n元素值建立带表结构单链线性表*/ /*指数系数输入*/ void CreatePolyn(PolynList &L,int n) { int i; PolynList p,q; L=(PolynList)malloc(sizeof(PolynNode)); // 结点 L->next=NULL; q=L; printf("输入%d数据
",n); for(i=1;icoef,&p->expn); //指数系数输入 q->next=p; q=q->next; } p->next=NULL; } // 初始条件:单链表L已存 // 操作结: 依L每数据元素调用函数vi()旦vi()失败,则操作失败 void PolynTraverse(PolynList L,void(*vi)(ElemType, ElemType)) { PolynList p=L->next; while(p) { vi(p->coef, p->expn); if(p->next) { printf(" + "); //+号输项面没+ } p=p->next; } printf("
"); } /*ListTraverse()调用函数(类型要致)*/ void visit(ElemType c, ElemType e) { if(c != 0) { printf("%dX^%d",c,e); //格式化输项式每项 } } /* 项式相加原理:归并 */ /* 参数:两已经存项式 */ /* 返值:归并新项式结点 */ PolynList MergeList(PolynList La, PolynList Lb) { PolynList pa, pb, pc, Lc; pa = La->next; pb = Lb->next; Lc = pc = La; // 用La结点作Lc结点 while(pa&&pb) { if(pa->expn expn) { pc->next = pa; //指数相等pc指针连指数结点 pc = pa; pa = pa->next; //指向该结点指针移 } else if (pa ->expn > pb->expn ) { pc->next = pb; //pc指针连指数结点 pc = pb; pb = pb->next; //指向该结点指针移 } else //(pa ->expn = pb->expn ) { pa->coef = pa->coef + pb->coef; //指数相等系数相加 pc->next = pa; pc = pa; pa = pa->next; //两指针都往移 pb = pb->next; } } pc->next = pa ? pa:pb; // 插入剩余段 return Lc; } void main() { PolynList ha,hb,hc; printf("非递减输入项式ha "); CreatePolyn(ha,5); // 位序输入n元素值 printf("非递减输入项式hb "); CreatePolyn(hb,5); // 位序输入n元素值 printf("项式ha :"); PolynTraverse(ha, visit); printf("
"); printf("项式hb :"); PolynTraverse(hb, visit); printf("
"); hc = MergeList(ha,hb); PolynTraverse(hc, visit); }

while(p)

等价于

while(p!=NULL)

如果p不指向NULL,那么就是没有到达结尾,那么就执行循环体中的printf()

每次循环都是 p->next就是链表的下个节点 当没有下个节点的时候 p就会等于NULL也就是0也就是false
这个时候 再返回while(P)就不会进去了

while(p) 表示 当 指针p == NULL时,就会退出循环,相当于 while(p != NULL){...}


c语言怎样才能输出中文???(最简单的方法)
定义一个字符串变量,在这个变量的值中就可以输入中文了。汉字是多字节的,一个char放不下,可以使用字符数组,但需要给数组分配空间,或者使用string。例如:include<stdio.h> int main(void){ char a[128];printf("请输入所需输出的汉字:");scanf("%s",a);printf("%s\\n",a);return 0;...

电脑里常用的的英语有那些(汉语意思)?
第一部分、计算机算法常用术语中英对照 Data Structures 基本数据结构 Dictionaries 字典 Priority Queues 堆 Graph Data Structures 图 Set Data Structures 集合 Kd-Trees 线段树 Numerical Problems 数值问题 Solving Linear Equations 线性方程组 Bandwidth Reduction 带宽压缩 Matrix Multiplication 矩阵乘法 Deter...

求一C语言程序设计作业,工资管理系统
void shchx(WORKER *wp); \/*详细输出*\/void readw(WORKER **wp,FILE *fp); \/*从文件中读取职工信息*\/PAYLIST * whtailp(WORKER *wp); \/*查找职工---链尾,返回链尾*\/void xianshw(void); \/***显示第n个部门的职工信息***\/PAYLIST * insertp(WORKER *wp,PAYLIST *p,PAYLIST *tail); \/*插...

C语言 读取文件时 除正常数据外 还有些乱码
出现这种,是内存溢出的结果。程序无错。你可以修改下你定义的数组的长度。以及把,改成(^)替换。

软考软件设计师的复习咨询
· 模块规格说明书(功能和接口说明、程序处理逻辑的描述、输入输出数据格式的描述) · 测试要求说明书(测试类型和目标、测试用例、测试方法) 3.3 程序设计评审 4. 系统实施 4.1 配置计算机系统及其环境 4.2 选择合适的程序设计语言 4.3 掌握C程序设计语言,以及C++、Java、Visual、Basic、Visual C++中任一种程序设计...

sql数据库 建立三个表 student(学号 姓名 性别) sc(学号 课程号 成绩...
WHEkE s.学号=sc.学号AND ALL成绩>=85 (33)查询选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成 绩降序排序,正确的命令是 A)SELECT s.学号,姓名,平均成绩FROM student s,score sc WHEREs.学号=sc.学号 GROUP BY s.学号HAVING COUNT(*)>=5 ORDER BY平均成绩DESC B)SELECT...

略阳县15881242317: C语言链表输出,while(p)是什么意思?怎么判断完成输入了? -
仪赖美卡: while(p) 等价于 while(p!=NULL) 如果p不指向NULL,那么就是没有到达结尾,那么就执行循环体中的printf()

略阳县15881242317: C语言中while(p)和while(*p)有何区别? -
仪赖美卡: while(p) 等价于while(p!=NULL) 检查的是p值是不是NULL 而while(*p) 相当于while( *p != 0) 检查的是p所指向的地址中的数据是否为0,但前提是p不能为NULL,所以,你的程序在使用while(*p)时,会出错!在你这个代码中,会体现为编译出错!

略阳县15881242317: C语言编程:实现对链表数据的输出~~
仪赖美卡: while循环后加上这段代码 p = head; while(NULL != p ){ printf("%d\t", p->data); p = p->next; }

略阳县15881242317: C语言链表输出 -
仪赖美卡: 1.我看这个链表应该是带头的链表,所以for循环前的p=q->next;应该改成p=q; 2.链表不是数组,楼主好像没有完全理解链表. 在你的代码基础上改下: for(i=0;i{ printf("%d\t%d\t",p->num,p->age);// p=p->next;//用这个来实现查找下一个 } 不过一般情况下不知道链表的长度,可以按照下面方式遍历 while(p) { printf("%d\t%d\t",p->num,p->age);// p=p->next; } 3.没有释放空间的语句,可以借鉴上述遍历的方式.

略阳县15881242317: 求循环链表的输出(C语言) -
仪赖美卡: p1 = p2 = head ;for ( i = 0 ; i .... ; i++ ) { printf ( "%..." , p1-> ... ) ; p1 = p2 -> next ; p2 = p1 ; } 你说你啊大哥,问问题要详细一点啊 链表里面有什么要说明啊

略阳县15881242317: 在C语言中,什么是链表呀? -
仪赖美卡: 链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成.每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域. 相比于线性表顺序结构,操作复杂.由于不必须按顺序存储,...

略阳县15881242317: c语言如何输出单链表,为什么我输出的值,不是我输入的值呢? -
仪赖美卡: 输入的字符输出的字符ascii码数值

略阳县15881242317: c语言如何输出单链表,为什么我的输出和输入不一致呢? -
仪赖美卡: 输入是字符,输出是整数,所以看上去不一致.把Output函数里的 printf("%d",p->data)中的%d改成%c就行了.

略阳县15881242317: C语言的链表怎么用?? -
仪赖美卡: #include <stdio.h> typedef struct Link/*双向链表结构体*/ { int data; struct Link *lift; struct Link *right; }linkx,*linky; linky Init();/*建立双向链表*/ void PrLink(linky p);/*输出双向链表*/ linky Sort(linky head);/*对双向链表排序*/ linky Swap(linky head,...

略阳县15881242317: c语言如何判断链表是升序 -
仪赖美卡: 看代码:#include <stdio.h>#include <stdlib.h>#include <malloc.h> typedef struct node {int data; struct node* next; } node, *list;// 判断链表是否为升序,是的话返回 1,不是返回 0 int is_asc(list head) { list p = head; while (p->next != NULL) { if (p->...

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