单链表(Single Linked List)
char * name;
struct node *next;
}Node; // 定义一个结构体
void myfree(Node * pHead){ //从头指针开始释放
while (pHead != NULL) {
Node *ptemp = pHead->next;
free(pHead->name);
free(pHead);
pHead = ptemp;
}
} //释放申请过的内存
int main(int argc, const char * argv[]) {
Node *phead = NULL; //定义头指针
Node *ptail = NULL; //定义尾指针
for (int i = 0; i<5; i++) {
Node *ptemp = (Node*)malloc(1*sizeof(Node)); //申请一个结构体大小的空间
if (ptemp == NULL) {
myfree(phead);
exit(EXIT_FAILURE);
}
printf("请输入姓名:");
char * name=NULL; //临时存放name
char c;
int total =0; // 用来计数 当前存到第几个
while (1) {
c=getchar();
if (c=='\n') {
break;
}
if (name == NULL) { // 如果第一次存放
name = (char*)malloc(1*sizeof(char));
if(name==NULL){
free(ptemp);
myfree(phead);
exit(EXIT_FAILURE);
}
}else{
name = (char*)realloc(name,(total+1)*sizeof(char) );
if (name == NULL) {
free(ptemp);
myfree(phead);
exit(EXIT_FAILURE);
}
}
*(name+total)=c; // 依次存放
total++;
}
ptemp->name = name; //指向临时的name
ptemp->next = NULL;
if (phead==NULL) { //如果头指针是空的 头指针尾指针指向第一个
phead = ptemp;
ptail = ptemp;
}else{
ptail->next = ptemp; // 衔接之后 尾指针移动
ptail = ptemp;
}
}
Node * ptemp = phead; //防止头指针跑,找不到后面的,所以定义临时的
while (ptemp!=NULL) {
printf("%s ",ptemp->name);
ptemp=ptemp->next;
}
myfree(phead);
return 0;
}
单链表(Single Linked List)的更多相关文章
- C#单链表
顺序表是用地址连续的存储单元顺序存储线性表中的各个数据元素, 逻辑上相邻的数据元素在物理位置上也相邻.因此,在顺序表中查找任何一个位置上的数据元素非常方便, 这是顺序存储的优点. 但是, 在对顺序表进 ...
- 【数据结构】单链表&&静态链表详解和代码实例
喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 单链表(Singly Linked List ) 1.1 什么是单链表? 单链表是一种链式存储的结构.它动态的为节点分配存 ...
- 《数据结构》2.3单链表(single linked list)
//单链表节点的定义 typedef struct node { datatype data; struct node *next; }LNode,*LinkList; //LNode是节点类型,Li ...
- [LeetCode] Linked List Cycle II 单链表中的环之二
Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Foll ...
- [算法][LeetCode]Linked List Cycle & Linked List Cycle II——单链表中的环
题目要求 Linked List Cycle Given a linked list, determine if it has a cycle in it. Follow up: Can you so ...
- [CareerCup] 2.6 Linked List Cycle 单链表中的环
2.6 Given a circular linked list, implement an algorithm which returns the node at the beginning of ...
- 单链表反转(Singly Linked Lists in Java)
单链表反转(Singly Linked Lists in Java) 博客分类: 数据结构及算法 package dsa.linkedlist; public class Node<E> ...
- 【LeetCode-面试算法经典-Java实现】【114-Flatten Binary Tree to Linked List(二叉树转单链表)】
[114-Flatten Binary Tree to Linked List(二叉树转单链表)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a bin ...
- [LeetCode] 142. Linked List Cycle II 单链表中的环之二
Given a linked list, return the node where the cycle begins. If there is no cycle, return null. To r ...
随机推荐
- box-shadow实例1
实例一: 1.html <div class="paddingMiddle"> <div class="blank"></div& ...
- Android开发:shape和selector和layer-list的(详细说明)
http://blog.csdn.net/brokge/article/details/9713041
- 哪几个数的阶乘末尾有n个零?
题目:哪几个数的阶乘末尾有n个0?其中n是一个正整数,从键盘输入. int main( void ) /* name: zerotail.cpp */ { int num, n, c, m; cout ...
- linux学习方法之一
相信不少想学习linux的新手们正愁不知道看什么linux学习教程好,下面小编给大家收集和整理了几点比较重要的教程,供大家学习,如需想学习更多的话,可到wdlinux学堂寻找更多教程. 1.什么是RP ...
- Mvc音乐商店demo的ajax异步删除功能总结
刚刚从学校出来参加工作,没啥工作经验,所以各位大神们不要嘲笑哈! 来公司后要进行培训,给我们的作业中有一个使用 dapper+mvc+ajax+SQL Server 2008,来实现一个音乐商店的de ...
- CI框架微信开发-自定义菜单
在CI框架下面实现了自定义菜单功能.写了一个model,一个类库.顺便附带access_token的实现方式 <?php class Makemenu{ public $menustr; pub ...
- poj 1177 picture
题目链接:http://poj.org/problem?id=1177 分析:这道题主要用到了线段树.扫描线以及离散化的相关算法. 离散化 离散化是当数字不多但是范围很大时采用的一种方法,将大区间的数 ...
- js阻止元素的默认事件与冒泡事件
嵌套的div元素,如果父级和子元素都绑定了一些事件,那么在点击最内层子元素时可能会触发父级元素的事件,从而带来一定的影响. 1. event.preventDefault(); -- 阻止元素的默认 ...
- Bing必应(Yahoo雅虎)搜索引擎登录网站 - Blog透视镜
Bing必应是微软的搜索引擎,原本是置放在MSN网站上的,微软重新开发并改为新的名子,只要连到官网,登录网站后,过了不久,搜索引擎就会用爬虫,来检索你的网站,等过了一阵子之后,自然就可以找到你的文章. ...
- Qt编程可不可以结合其他的第三方库和本土API?(有zeroMQ的Qt封装,还可轻易使用Python的库)
作者:渡世白玉链接:http://www.zhihu.com/question/29030777/answer/59378712来源:知乎著作权归作者所有,转载请联系作者获得授权. 可以,十分可以,你 ...