编写头插法建立单链表的过程与体会
来源:互联网 发布:流浪的蛤蟆 知乎 编辑:程序博客网 时间:2024/05/17 09:21
下面是一段我看过算法之后,自己又重新编写并成功运行的一段程序:
# include<stdio.h>typedef struct node{char data;struct node *next;}listnode;typedef listnode *linklist;listnode *p;linklist crelist(void){char ch;listnode *p;linklist head;head=NULL;ch=getchar();while(ch!='\n'){p=(linklist)malloc(sizeof(listnode));p->data=ch;p->next=head;head=p;ch=getchar();}return (head);}void main(){linklist head=crelist();do{printf("%c\n",head->data);head=head->next;}while(head!=NULL);printf("\n");}整体结构与原算法非常相似,但自己编写过程之前却遇到了下面的问题:
1程序第二行"typedef"关键字的意思与应用,其实大一c语言那本书上有说到,可见我的基础还很欠缺啊。但还是百度了一下,最重要的作用就是为现有类型重新起一个名字。如上面程序中"struct node"类型就可以用“listnode”来替代,二者同样为类型名。
2程序17行中"malloc"函数,又百度了一下。。简单来说,这个函数可以向系统申请存储空间,并带回一个指针,而且这个指针是可以进行强制类型转化的,上面程序中带回的指针就是只想一个链表中的结点了。(17行中,"(linklist)"这一单词是可以用“(listnode *)"来替换的,当明白了第1点之后就可以理解了)。
3这是没解决的一个问题在crelist函数体中,用到了两次getchar()函数,其中的机理还是不确定,看到这篇文章的同学帮忙解释一下吧-。
这次编程的体会:遇到问题时大可找百度帮忙。第一次看这个程序很费力,可是连续看了3遍之后就可以自己编写了,调试成功后还是挺有成就感的。看不懂的程序就再看第二遍,第三遍,相信自己肯定能掌握这个算法。
- 编写头插法建立单链表的过程与体会
- TCP建立与释放连接的过程
- TCP连接的建立与终止过程
- TCP连接的建立与终止过程
- TCP 连接的建立与终止过程
- 服务与客户端建立连接的过程
- 简单的存储过程编写与调用
- 存储过程的编写与优化经验
- Oracle存储过程的编写与测试
- MySQL存储过程的编写与使用
- php建立数据库网站的体会
- 编写和建立存储过程,并定义合适的过程返回状态码和信息
- 6410调试mjpeg-stream过程与体会
- 编写搜索功能的一点点体会
- 对于这么长时间编写类的体会
- 个人体会:编写自己的头文件
- 第一次用H5编写游戏的体会
- DES的建立过程
- oracle提示SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled
- ubuntu read-only file system
- 蹦蹦跳跳的Rabbit大神 暴力
- 如何理解本征VLAN,能否给点具体的、详细的讲解呢?
- HDU 2002 - 计算球体积
- 编写头插法建立单链表的过程与体会
- c/c++ struct内存对齐
- eclipse 更新至字体为Courier New
- 谈谈投简历
- Keil5 J-link V8固件升级
- HDU 2003 - 求绝对值
- php内存溢出
- 为kindeditor添加在线播放视频功能(基于原有flash上传,mp4,flv,flash)
- Android学习笔记——文件路径(/mnt/sdcard/...)、Uri(content://media/external/...)学习