博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言数据结构之单链表的拆分
阅读量:5271 次
发布时间:2019-06-14

本文共 2414 字,大约阅读时间需要 8 分钟。

//单链表的拆分# include
# include
typedef struct LNode { char data; //每个结点中存储的数据为字符型 struct LNode *next; //指向后继结点 }LinkList; void Create(LinkList *&L) { LinkList *s,*r; L=(LinkList *)malloc(sizeof(LinkList));//创建头结点 L->next=NULL; //头结点的next域置空 r=L; //r始终指向终端结点,开始时指向头结点 printf("\n输入链表中的各元素(注意字母为单字符):\n"); while(1) { s=(LinkList *)malloc(sizeof(LinkList)); //创建新结点 scanf("%c",&s->data); //输入新节点的数据 r->next=s; //将*s插入*r之后 r=s; if(s->data=='\n') //若输入回车,则字符串的输入结束 break; } r->next=NULL; //终端结点next域置NULL }void Printf(LinkList *L) { LinkList *p=L->next; while (p!=NULL) { printf("%c\t",p->data); //当指针p所指结点next域不为NULL时,将该结点的数据输出 p=p->next; //p指针向后移动 } } void Fun(LinkList *hd,LinkList *ha,LinkList *hb,LinkList *hc) { LinkList *p=hd->next,*ra,*rb,*rc; //定义三个指向链表结点的指针 ra=ha; //ra始终指向ha的末尾结点 rb=hb; //ra始终指向ha的末尾结点 rc=hc; //ra始终指向ha的末尾结点 while(p!=NULL) //当指针p所指结点的指针域不为NULL时,执行以下循环过程 { if(p->data>='A'&&p->data<='Z'||p->data>='a'&&p->data<='z')//如果数据为字母类型 { ra->next=p;ra=p; //将*p链接到ha单链表末尾 p=p->next; //p指针后移 } else { if(p->data>='0'&&p->data<='9') //如果数据为数字类型 { rb->next=p;rb=p;//将*p链接到ha单链表末尾 p=p->next; //p指针后移 } else //数据为其它类型的情况 { rc->next=p; rc=p;//将*p链接到ha单链表末尾 p=p->next; //p指针后移 } } } ra->next=NULL; rb->next=NULL; rc->next=NULL; //将三个新链表尾结点的next域置空 } int main() { LinkList *hd,*ha,*hb,*hc; //定义四个头结点指针,*hd代表待拆分链表,*ha,*hb和*hc分别代表字母,数字和其它类型的链表 ha=(LinkList *)malloc(sizeof(LinkList));//创建ha头结点 hb=(LinkList *)malloc(sizeof(LinkList));//创建hb头结点 hc=(LinkList *)malloc(sizeof(LinkList));//创建hc头结点 int i; //定义整型数据i,用于判断是否终止本程序的运行 char m; //定义字符型数据m,存放输入i的值之后的'\n' while(1) { Create(hd); //调用建立单链表并输入数据的函数 Fun(hd,ha,hb,hc); //调用拆分链表的函数 printf("\n字母:"); //提示输出的链表中数据为字母类型 Printf(ha); //调用输出链表元素的函数,输出ha链表中的数据(字母类型) printf("\n数字:"); //提示输出的链表中数据为数字类型 Printf(hb); //调用输出链表元素的函数,输出hb链表中的数据(数字类型) printf("\n其它:"); //提示输出的链表中数据为其它类型 Printf(hc); break; } //调用输出链表元素的函数,输出hc链表中的数据(其它类型) return 0; }

转载于:https://www.cnblogs.com/zhuhengjie/p/5966948.html

你可能感兴趣的文章
2019年春季学期第四周作业
查看>>
MVC4.0 利用IActionFilter实现简单的后台操作日志功能
查看>>
rotate the clock
查看>>
bugku 变量
查看>>
Python 环境傻瓜式搭建 :Anaconda概述
查看>>
数据库01 /Mysql初识以及基本命令操作
查看>>
数据库02 /MySQL基础数据类型以及多表之间建立联系
查看>>
Python并发编程04/多线程
查看>>
CF461B Appleman and Tree
查看>>
CF219D Choosing Capital for Treeland
查看>>
杂七杂八的小笔记本
查看>>
51Nod1353 树
查看>>
CF1215E Marbles
查看>>
BZOJ2339 HNOI2011卡农(动态规划+组合数学)
查看>>
octave基本操作
查看>>
axure学习点
查看>>
WPF文本框只允许输入数字[转]
查看>>
dom4j 通用解析器,解析成List<Map<String,Object>>
查看>>
第一个项目--用bootstrap实现美工设计的首页
查看>>
使用XML传递数据
查看>>