C语言问题求解

题目内容:建立长度为n的单链表,n>0,然后将其数据元素逆置,即第1个元素变为最后一个元素,第2个元素变为倒数第2个元素,以此类推,最后一个元素变为第1个元素。数据类型为... 题目内容:
建立长度为n的单链表,n>0,然后将其数据元素逆置,即第1个元素变为最后一个元素,第2个元素变为倒数第2个元素,以此类推,最后一个元素变为第1个元素。数据类型为字符型。

输入格式:

第一行为链表长度n;
第二行为链表中的n个数据元素的值。

输出格式:

输出为逆置后的链表中的所有数据元素的值。

输入样例:

4
A B C D

输出样例:

D C B A
展开
 我来答
百度网友b66829de0
2020-06-14 · TA获得超过114个赞
知道小有建树答主
回答量:259
采纳率:65%
帮助的人:71.8万
展开全部
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

struct Node
{
char c;
Node* next = NULL;
};

struct List
{
Node head;
Node* back;
int size = 0;
void pushback(char c)
{
Node* node = new Node;
node->c = c;
if (size == 0)
{
head.next = node;
}
else
{
back->next = node;
}
back = node;
size++;
}
void reverse()
{
Node* t = NULL;
Node* p = back = head.next;
Node* q = head.next->next;

while (q != NULL)
{
t = q->next;
q->next = p;
p = q;
q = t;
}
head.next = p;
back->next = NULL;
}
void show()
{
Node* p = head.next;
for (int i = 0; i < size; i++)
{
printf("%c ", p->c);
p = p->next;
}
printf("\n");
}
};
int main()
{
int n;
scanf("%d", &n);
getchar();
char* arr = new char[n * 2];
scanf("%[^\n]", arr);
List list;
for (int i = 0; i < n * 2; i += 2)
{
list.pushback(arr[i]);
}
list.reverse();
list.show();

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式