//此程序在拆分元素是没有问题,但有一定缺陷,再输入时注意空格等隐藏字符的输入,最好输入例子10asdfghjklo,中间不要有空额换行等字符。
#include <iostream>
#include<malloc.h>
#include<stdio.h>
using namespace std;
typedef struct LNode
{
char data;
struct LNode *next;
} LinkList;
void InitList(LinkList *&L)
{
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
}
void CreateListF(LinkList *&L,char a[],int n)
{
LinkList *s;
int i;
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
for(i=0; i<n; i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=a[i];
s->next=L->next;
L->next=s;
}
}
void split(LinkList *&L,LinkList *&L1,LinkList *&L2)
{
LinkList *p=L->next,*q,*r1;
L1=L;
r1=L1;
L2=(LinkList *)malloc(sizeof(LinkList));
L2->next=NULL;
while(p!=NULL)
{
r1->next=p;
r1=p;
p=p->next;
q=p->next;
p->next=L2->next;
L2->next=p;
p=q;
}
r1->next=NULL;
}
void DisList(LinkList *L)
{
LinkList *p=L->next;
while(p!=NULL)
{
printf("%c",p->data);
p=p->next;
}
printf("\n");
}
void DestoryList(LinkList *L)
{
LinkList *pre=L,*p=L->next;
while(p!=NULL)
{
free(pre);
pre=p;
p=pre->next;
}
}
int main()
{
int i,n;
char a[100];
scanf("%d",&n);
for(i=0; i<n; i++)
scanf("%c",&a[i]);
LinkList *L,*L1,*L2;
InitList(L);
CreateListF(L,a,n);
DisList(L);
split(L,L1, L2);
DisList(L1);
DisList(L2);
DestoryList(L);
return 0;
}
数据结构之元素拆分
最新推荐文章于 2022-11-01 16:14:23 发布