PTA-链表逆序

一.链表逆置

本题要求实现一个函数,将给定单向链表逆置,即表头置为表尾,表尾置为表头

裁判测试程序样例

#include <stdio.h>
#include <stdlib.h>

struct ListNode {
int data;
struct ListNode *next; };

struct ListNode *createlist(); /裁判实现,细节不表/ struct ListNode *reverse(
struct ListNode *head ); void printlist( struct ListNode *head ) {
struct ListNode *p = head;
while § {
printf("%d “, p->data);
p = p->next;
}
printf(”\n"); }

int main() {
struct ListNode *head;
head = createlist();
head = reverse(head);
printlist(head);
return 0; }

/* 你的代码将被嵌在这里 */

函数接口定义: struct ListNode *reverse( struct ListNode *head);
其中head是用户传入的链表的头指针;函数reverse将链表head逆置,并返回结果链表的头指针。

 struct ListNode *reverse( struct ListNode *head )
{
 int a[10000],len=0,i;
    struct ListNode *head1=NULL,*end1=NULL;
 struct ListNode *temp=head;
 while(temp!=NULL)
 {
  a[len]=temp->data;
  temp=temp->next;
  len++;
 }
 for(i=0;i<len;i++ )
 {
  struct ListNode *p=(struct ListNode *)malloc(sizeof(struct ListNode));
  p->data=a[i];
  p->next=head1;
  head1=p;
 }
 return head1;
}

二,逆序数据建立链表

裁判测试程序样例:
#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int data;
struct ListNode *next;
};
struct ListNode *createlist();
int main()
{
struct ListNode *p, *head = NULL;
head = createlist();
for ( p = head; p != NULL; p = p->next )
printf("%d “, p->data);
printf(”\n");
return 0;
}

struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2)
{
 int a[1000],i=0,j,k,t;
 struct ListNode *p1=list1,*p2=list2,*temp;
 struct ListNode *head=NULL,*end=NULL;
 while(p1!=NULL)
 {
  a[i]=p1->data;
  p1=p1->next;
  i++;
 }
 while(p2!=NULL)
 {
  a[i]=p2->data;
  p2=p2->next;
  i++;
 }
 for(j=0;j<i-1;j++)
 {
  for(k=j+1;k<i;k++)
  {
   if(a[j]>a[k])
   {
    t=a[j];
    a[j]=a[k];
    a[k]=t;
   }
  }
 }
 for(j=0;j<i;j++)
 {
 temp=(struct ListNode*)malloc(sizeof(struct ListNode));
 temp->data=a[j];
 if(head==NULL)
 {
  head=temp;
  end=temp;
  head->next=NULL;
 }
 if(end!=NULL)
 {
  end->next=temp;
  end=temp;
 }
 end->next=NULL;
 }
 return head;
}
发布了15 篇原创文章 · 获赞 3 · 访问量 366

猜你喜欢

转载自blog.csdn.net/Vevean2545116309/article/details/103827278