编写头插法建立单链表的过程与体会

来源:互联网 发布:流浪的蛤蟆 知乎 编辑:程序博客网 时间: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遍之后就可以自己编写了,调试成功后还是挺有成就感的。看不懂的程序就再看第二遍,第三遍,相信自己肯定能掌握这个算法。



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 职称年审过期了怎么办 嘉兴驾模预约怎么办 电大考试去不了怎么办 负债高怎么办房贷 宁波鄞州银行卡怎么办 硕士学位实验数据不好怎么办 小区外过车很吵怎么办 建筑物初级消防证书怎么办 毕业答辩去不了怎么办 卡波西水痘样疹怎么办 58企业认证失败怎么办 炸鸡店没生意怎么办 你好漂亮重名了怎么办 医保卡被冒用怎么办 理财钱被骗走怎么办 个体户怎么办三方协议 社保户籍错了怎么办 身份证号码变更后驾驶证怎么办 公司倒闭欠工资怎么办 海南买房要社保怎么办? 工商核名不过怎么办 税局要求查账怎么办 完税凭证丢了怎么办 开票开错了怎么办 上海居住证搬家了怎么办 上海无户口 医保怎么办 淘宝账号注销不了怎么办 淘宝账号被覆盖怎么办 淘宝号注册不了怎么办 appleid密码忘了怎么办 蘑菇街用白富美后忘记账号怎么办 不知道宽带账号怎么办 上网用户名忘了怎么办 别人借淘宝号怎么办 不知道ipad密码怎么办 捡的ipad密码怎么办 12306注册名已存在怎么办 忘记网银用户名怎么办 登录用户名忘了怎么办 网银登录错误怎么办 路由器账号忘了怎么办