题目链接:http://acm.sdibt.edu.cn:8080/judge/contest/view.action?cid=316#problem/A
原题是顺序存储的线性表,下面给出的是链式存储的线性表的逆置.
#include <stdio.h>
#include <stdlib.h>
typedef struct i
{
    int date;
    struct i *next;
}link;
link *set(int n)//建表函数
{
    int i;
    link *p,*q,*head;
    head=p=q=(link *)malloc(sizeof(link));
    p->next=NULL;
    for(i=0; i<n-1; i++)
    {
        p=(link *)malloc(sizeof(link));
        p->next=NULL;
        scanf("%d",&(p->date));
  q->next=p;
        q=p;
    }
    q->next=NULL;
    return head;
}
int main()
{
 int  n,i;
 biao *p,*q,*r,*head;
 scanf("%d",&n);
 head=set(n+1);
 p=head->next;//开始逆置
    q=p->next;
 r=q->next;
 p->next=NULL;
 q->next=p;
      p=q;
   q=r;
   r=r->next;
 while(r!=NULL)
 {
   
    q->next=p;
       p=q;
    q=r;
    r=r->next;
 }
    q->next=p;
 head=p=q;
    printf("%d",*p);//输出
 p=p->next;
 while(p!=NULL)
 { 
  printf(" %d",*p);
  p=p->next;
 }
 return 0;
}

发表评论

电子邮件地址不会被公开。

Post Navigation