用单向链表输入数据,逆序显示出
来源:互联网 发布:mac怎么关闭桌面 编辑:程序博客网 时间:2024/05/10 04:18
#include <stdio.h>#include <stdlib.h>#include <stdbool.h>typedef int datatype;typedef struct linklist{ datatype data; struct linklist * next;}link_list,*link_plist;void linklist_init(link_plist *H);void linklist_insert(link_plist p,link_plist new);bool linklist_del(link_plist p);bool is_empty_linklist(link_plist p);void linklist_show(link_plist h);void linklist_create(link_plist h);void linklist_sort(link_plist h);int main(void){ link_plist h; linklist_init(&h); linklist_create(h); linklist_sort(h); return 0;}//初始化,传入指针的指针void linklist_init(link_plist *H){ *H = (link_plist)malloc(sizeof(link_list)); if(*H == NULL) { perror("malloc failed"); exit(1); } (*H)->next = NULL;//把头结点的next指针赋值为NULL}//插入void linklist_insert(link_plist p,link_plist new){ new->next = p->next; p->next = new;}//删除p后面的一个节点bool linklist_del(link_plist p){ link_plist t; if(p->next == NULL) { printf("删除失败,表已空\n"); return false; } //记住p后面的第一个结点 t = p->next; //p结点指向t的下一个 p->next = t->next; //释放t结点,t结点被删除 free(t); return true;}//判断空bool is_empty_linklist(link_plist p){ if(p->next == NULL) return true; else return false;}//遍历(厉害啊)void linklist_show(link_plist h){ link_plist t; printf("|_|"); for(t=h->next;t!=NULL;t=t->next)//移动t printf("---->%d",t->data); printf("\n");}//创建一个表void linklist_create(link_plist h){ int n,i; link_plist new,p=h; printf("你要创建几个数据的表:"); scanf("%d",&n); for(i=0;i<n;i++) { new = (link_plist)malloc(sizeof(link_list));//用malloc动态分配内存 //malloc之后一般要判断是否申请成功 if(NULL == new) { perror("malloc failed");//用perror exit(1); } printf("请输入一个数据:"); scanf("%d",&new->data); //插入 new->next = p->next; p->next = new;// linklist_insert(p,new); p = p->next;//让p始终指向表尾 linklist_show(h); }}//倒序void linklist_sort(link_plist h){ //将原链表拆分成两个表:一个空表,一个数据表 link_plist p,t; p=h->next;//数据表 h->next=NULL;//空表 while(p != NULL) { t = p; p = p->next; linklist_insert(h,t); linklist_show(h); }}
/*编译过程
$ ./a.out
你要创建几个数据的表:5
请输入一个数据:1
|_|—->1
请输入一个数据:2
|_|—->1—->2
请输入一个数据:3
|_|—->1—->2—->3
请输入一个数据:4
|_|—->1—->2—->3—->4
请输入一个数据:5
|_|—->1—->2—->3—->4—->5
|_|—->1
|_|—->2—->1
|_|—->3—->2—->1
|_|—->4—->3—->2—->1
|_|—->5—->4—->3—->2—->1
*/
阅读全文
1 0
- 用单向链表输入数据,逆序显示出
- 单向链表逆序
- 单向链表逆序
- 单向链表逆序
- 单向链表逆序
- 单向链表逆序
- 单向链表逆序
- 单向链表逆序
- 单向链表逆序
- 单向链表逆序
- 逆序打印单向链表
- 算法-单向链表逆序
- 单向链表逆序输出
- 单向链表逆序 图解
- 单向链表逆序问题
- 单向链表新增逆序
- 将单向链表逆序
- 华为机试题(8)--单向链表的建立,反转(逆序),遍历显示,删除
- 在单链表中删除倒数第K个节点 Python 版
- CF-QAQ
- ceph集群维护记录
- 生活中图像处理的一个小应用
- BP神经网络:feedforwardnet版回归预测
- 用单向链表输入数据,逆序显示出
- 栈的顺序存储的代码实现
- PCA主成分分析
- Remove Element
- 第一章:对象导论
- WeaveSocket框架-Unity太空大战游戏-客户端-3
- EasyAR+Unity开发(一)HelloAR Demo配置
- POJ2236 Wireless Network(并查集)
- python爬取糗事百科段子