tubor c 2.0实现数据结构 链表逆置

#include<string.h>
 #include<ctype.h>
 #include<malloc.h> /* malloc()等 */
 #include<limits.h> /* INT_MAX等 */
 #include<stdio.h> /* EOF(=^Z或F6),NULL */
 #include<stdlib.h> /* atoi() */
 #include<io.h> /* eof() */
 #include<math.h> /* floor(),ceil(),abs() */
 #include<process.h> /* exit() */
 /* 函数结果状态代码 */
 #define TRUE 1
 #define FALSE 0
 #define OK 1
 #define ERROR 0
 #define OVERFLOW -2
 #define INFEASIBLE -1
typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef int Boolean;
typedef int ElemType;
 /* Boolean是布尔类型,其值是TRUE或FALSE */
struct LNode
 {
   ElemType data;
   struct LinkList *next;
 }LNode;
typedef struct LNode *LinkList;
Status InitList(LinkList L)

{

   L = (LinkList)malloc(sizeof(LNode));
   if (!L)return ERROR;
   L->next = NULL;
    return OK;

}
Status ListInsert(LinkList L,int i,ElemType e)
{
 int j=0;
 LinkList p=L,s;
 while(p&&j<i-1)
 {
 p=p->next;
 j++;
 }
 if(!p||j>i-1) return ERROR;
 s=(LinkList)malloc(sizeof(struct LNode));
 s->data=e;
 s->next=p->next;
 p->next=s;
 return OK;
}

Status ChangeList(LinkList L)
 {
 LinkList p,q;
 LinkList head;
 p=head->next;
 head->next=NULL;
 while(p!=NULL) {
   q=p;
   p=p->next;
   q->next=head->next;
   head->next=q;
 }
}

 

void main()
{
 LinkList L,p;
 int num,i;
 ElemType e;
 InitList(L);
 printf("链表中插入几个元素?");
 scanf("%d",&num);
 printf("这些元素分笔是:");
 for(i=1;i<=num;i++)
 {scanf("%d",&e);
  ListInsert(L,i,e);
  }
 p=L;
 printf("现在链表元素是");
for(i=1;i<=num;i++)
 {
  p=p->next;
   printf("%d ",p->data);
 }
printf("/n");

printf("首尾交换后链表元素是");
p=L;
ChangeList(L);
 for(i=1;i<=num;i++)
 {
  p=p->next;
   printf("%d ",p->data);
 }

getch();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值