逆置线性表(线性表)

Home Web Board ProblemSet Standing Status Statistics
OJ系统新功能测试中,如有问题请联系 17865569030 17865569180 17865571035 尽量不要在上课时间打电话

Problem B: 逆置线性表(线性表)

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 940   Solved: 545
[ Submit][ Status][ Web Board]

Description

(线性表)请写一个算法将顺序存储结构的线性表(a1...an)逆置为(an...a1)。

Input

输入长度n:5

输入数据:1 2 3 4 5

Output

5 4 3 2 1

Sample Input

5
7 8 9 10 11 

Sample Output

11 10 9 8 7 

HINT

逆置是数据结构中的题,类似数组中的逆置,即头尾互换。这里大家可以先用逆序,即输出时倒序输出,以后再用逆置做。

[ Submit][ Status][ Web Board]

代码

#include <stdio.h>
#include <malloc.h>
struct Num
{
	int n;
	struct Num *next;
}num;
struct Num *createlist(struct Num *head,int n);
void print(struct Num *head);
int main()
{
	struct Num *head=NULL;
	int n ;
	scanf("%d",&n);
	head=createlist(head,n);       //建立
	print(head);             //输出
	return 0;
}
struct Num *createlist(struct Num *head ,int n)                //头插法建立链表
{
	struct Num *p;
	int i ;
	p=head=(struct Num*)malloc(sizeof(struct Num));
	head=NULL;                                     
	p=(struct Num*)malloc(sizeof(struct Num));            //p建立新结点
	                      //将新结点插到开头的位置
	  for(i= 0; i<n ;i++)
	  {
			scanf("%d",&p->n);			                      
		if(head==NULL)
     	{
     		 head = p ;
     		 head->next =NULL;
		 }
		
		 else
		 {
		 	p->next =head;
		}   
        head= p;
		p=(struct Num*)malloc(sizeof(struct Num));         //p每次建立新结点
	}
	return head;
}

void print(struct Num *head)
{
	struct Num *current=head;
	while(current!=NULL)
	{
		printf("%d ",current->n);
		current=current->next;
	}
}

猜你喜欢

转载自blog.csdn.net/qq_41661809/article/details/80821096
今日推荐