2731 - 单链表逆置问题

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

跟定一个单链表,输入一组数据,然后把单链表数据逆置。

题目输入

第一行:输入一组数据。

题目输出

第一行:输出逆置前的单链表。

第二行:输出逆置后的单链表。

输入/输出样例

输入格式

A B C D E

输出格式

A B C D E
E D C B A

C语言解答

#include <stdio.h>
#define MAX 100
#define size 5
typedef char elemtype;
typedef struct seqlist
{
	elemtype elem[MAX];
	int last;
}Seqlist;

int main()
{
	struct seqlist l;
	int i;
	l.last=2*size-1;
	for(i=0;i<l.last;i++)
	{
		scanf("%c",&l.elem[i]);
		printf("%c",l.elem[i]);
	}
	printf("\n");
	for(i=l.last-1;i>=0;i--)
		printf("%c",l.elem[i]);
	printf("\n");
}

C++解答

#include <stdio.h>
#include <stdlib.h>
typedef char ElemType;
typedef struct Node
{
	ElemType data;
	struct Node * next;
}Node,*LinkList;

void CreateFromTail(LinkList L)
{
	int i;
	Node * s,*r;
	r=L;
	char c;
	for(i=0;i<9;i++)
	{
	s=(Node *)malloc(sizeof(Node));
	scanf("%c",&s->data);
	s->next=r->next;
	r->next=s;
	r=s;
	}
	r->next=NULL;
}
void Reverse_LinkList(LinkList L)  
{  
    Node *p, *q;  
    p = L->next;    //P指向链表第一个元素  
    L->next = NULL; //断开头结点与链表  
    while(p != NULL)  
    {  
        q = p;  
        p = p->next;  
        q->next = L->next;  //相当于前插法构建新的链表,和原来的相反  
        L->next = q;  
    }  
}
void show(LinkList L)	
{
	Node * r;
	r=L->next;
	while(r)
	{
		printf("%c",r->data);
		r=r->next;
	}
	printf("\n");
}
int  main()
{
	LinkList L;
	L=(Node *)malloc(sizeof(Node));
	L->next=NULL;
	CreateFromTail( L);
	show(L);
	Reverse_LinkList(L);
	show(L);
	return 0;
}