盟军特战队 盟军特战队
苦不过三生,情不过一世。
关注数: 668 粉丝数: 236 发帖数: 13,052 关注贴吧数: 104
C语言写链表的问题,貌偶似参数传递的问题,但是解决不了额。 #include<stdio.h> #include<stdlib.h> #include<malloc.h> #include<string.h> #define LEN_L sizeof(struct LNode) #define LEN_H sizeof(struct HNode) //元素结点结构体,元素节点类型 struct LNode{ long id; float data; struct LNode * next; }; //头结点结构体,头结点类型 struct HNode{ struct HNode * head; struct LNode * tail; char name[11]; long len; struct LNode * next; } ; struct HNode * InitList(){ struct HNode * head; head=(struct HNode * )malloc(LEN_H); head->head=head; head->tail=(struct LNode * )head; printf("请输入链表名(不能出现空格):"); scanf("%s",head->name); getchar(); head->len=0; head->next=NULL; Print(head); return(head); } int AddNode(struct HNode * h){ int i,n; struct LNode * p, * q; q=h->tail; n=2; for(i=1;i<=n;i++){ p=(struct LNode * )malloc(LEN_L); printf("元素数据:"); scanf("%lf",&p->data); p->id=i; p->next=NULL; q->next=p; q=p; printf("第%d个元素:ID-%ld Data-%lf\n",i,p->id,p->data); } return 0; } int Print(struct HNode * h){ printf("头结点地址: %o\n",h->head); printf("尾结点地址: %o\n",h->tail); printf("链表名: %s\n",h->name); printf("元素结点个数: %ld\n",h->len); printf("后继结点地址: %o\n",h->next); return 0; } //主函数 int main(){ struct HNode * head=NULL; head=InitList(); AddNode(head); Print(head); system("pause"); return 0; } 两次调用Print函数,但是结果输出的不一样。 特别是那个链表名name变量的输出,两次不一样。 在程序中去掉AddNode函数创建元素结点,就没有问题,但是参数的传递我没看出什么不对呀。 编译环境是Dev C++。
关于getchar和EOF的问题,求指教………… 最近在看《C程序设计语言-现代方法》,但是遇到了几个问题,其中就有关于EOF的。 首先大家知道EOF是什么。请看你下面的一段程序: #include <stdio.h> main(){      double nc;      for(nc = 1;getchar() != EOF; nc++)      ;      printf("你输入了%.0f个字符\n", nc);      system("PAUSE");      return 0; } 这段程序是这本书中的程序,通过getchar()函数,计算输入的字符的个数(当然是从键盘的输入的),但是实际编译后执行的结果并没有达到预期的效果。 我自己分析的原因是getchar()函数吧回车键的输入也当成了字符,这就照成了输入的字符流(文本流)没有结束字符串EOF,循环不能够结束,程序无法运行到printf();语句。可以通过下面的代码证实我的想法: 这段代码可以实现将输入的代码拷贝输出。 #include<stdio.h> main(){      printf("hello world!\n");      int c,d;      while((c=getchar())!=EOF){          putchar(c);          }      system("PAUSE");      return 0;      } 这本书是那么的经典,其中的代码肯定在无数次的编译中通过而被证实了是正确无误的。 希望路过的各位学长,我想知道怎么在我的编译环境中(我使用的是Windows7系统,devc++编译的)实现这个小程序。 也许这段程序的是设计通过存取文本文件来实现的,但是代码中并没有存取文件的操作。是不是这段程序需要Linux和GCC++的编译环境呀。
首页 1 2 下一页