首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >西电数据结构上机题——分解单链表

西电数据结构上机题——分解单链表

作者头像
zstar
发布2022-06-14 09:16:59
发布2022-06-14 09:16:59
33200
代码可运行
举报
文章被收录于专栏:往期博文往期博文
运行总次数:0
代码可运行

西电数据结构的一道上机题,分解单链表,终于想清楚了,注意其中的缩短单链表的小细节。直接贴代码不细述。 下面展示一些 成功运行的代码

代码语言:javascript
代码运行次数:0
运行
复制
#include<stdio.h>
#include<malloc.h>
typedef char datatype;
typedef struct node
{  datatype data;
   struct node *next;
}linklist;
void create(linklist*&);
void resolve(linklist*,linklist*,linklist*,linklist*);
void insert(linklist*,linklist*);
void print1(linklist*);
void print2(linklist*);
int main()
{  linklist *head,*letter,*digit,*other;
   create(head);
   print1(head);
   letter=(linklist*)malloc(sizeof(linklist));//建立3个空循环链表
   letter->next=letter;
   digit=(linklist*)malloc(sizeof(linklist));
   digit->next=digit;
   other=(linklist*)malloc(sizeof(linklist));
   other->next=other;
   resolve(head,letter,digit,other);//调用分解单链表的函数
   print2(letter);//输出循环链表
   print2(digit);
   print2(other);
}

//建立单链表
void create(linklist*&head)
{  datatype x;
   linklist *s,*r;
   head=new linklist;
   r=head;
   while((x=getchar())!='\n')
   {  
	  s=(linklist*)malloc(sizeof(linklist));
      s->data=x;
	  r->next=s;
	  r=s;
   }
   r->next=NULL;
}

//在循环链表中插入
void insert(linklist*h,linklist*p)
{  linklist *q=h;
   while(q->next!=h) q=q->next;
   q->next=p;
   p->next=h;
}

//输出单链表
void print1(linklist*head)
{  linklist *p=head->next;
   while(p!=NULL)
   {  printf("%c",p->data);
      p=p->next;
   }
   printf("\n");
}

//输出循环链表
void print2(linklist*head)
{  linklist *p=head->next;
   while(p!=head)
   {  
	   printf("%c",p->data);
       p=p->next;
   }
   printf("\n");
}

//添加按字母、数字、其它字符分解单链表算法
void resolve(linklist*head,linklist*letter,linklist*digit,linklist*other)
{
		linklist *p;
		p=head->next;
		while(p!=NULL)
		{
			head->next=head->next->next;
			if((p->data>='A'&&p->data<='Z')||(p->data>='a'&&p->data<='z'))
			{
				insert(letter,p);
			}
			else if(p->data>='0'&&p->data<='9')
			{
				insert(digit,p);
			}
			else
			{
				insert(other,p);
			}
			p=head->next;
		}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档