数据结构之元素拆分

来源:互联网 发布:淘宝屏蔽关键词 编辑:程序博客网 时间:2024/05/01 14:40
//此程序在拆分元素是没有问题,但有一定缺陷,再输入时注意空格等隐藏字符的输入,最好输入例子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;}

原创粉丝点击