第1个回答 推荐于2018-12-18
# include "stdio.h"
# include "stdlib.h"
typedef struct LNode
{
int data;
LNode * next;
} * LinkList;
LinkList create_list()
{
int len;
int i;
int val;
LinkList pHead = (LinkList)malloc(sizeof(LNode));//头结点
LinkList pTail = pHead;
pTail->next = NULL;
printf("单链表长度是len=");
scanf("%d",&len);
for (i=0;i<len;++i)
{
LinkList pNew = (LinkList)malloc(sizeof(LNode));
printf("第%d个数据:",i+1);
scanf("%d",&val);
pNew->data = val;
pTail->next = pNew;
pNew->next = NULL;
pTail = pNew;
}
return pHead;
}
void traverse(LinkList pHead)
{
LinkList p = pHead->next ;
while (NULL != p)
{
printf("%d ",p->data);
p = p->next;
}
printf("\n");
return ;
}
LinkList daozhi(LinkList L)//单链表的倒置算法
{
LNode * p,* q;
p = L->next;
L->next = NULL;
while(p)
{
q = p;
p = p->next;
q->next = L->next;
L->next = q;
}
return L;
}
int main(void)
{
LinkList pHead;
pHead = create_list();
printf("遍历单链表:");
traverse(pHead);
daozhi(pHead);
printf("倒置单链表元素后,重新遍历单链表:");
traverse(pHead);
return 0;
}
/*
输出结果:
------------------------
单链表长度是len=5
第1个数据:1
第2个数据:2
第3个数据:3
第4个数据:4
第5个数据:5
遍历单链表:1 2 3 4 5
倒置单链表元素后,重新遍历单链表:5 4 3 2 1
Press any key to continue
------------------------------
*/本回答被网友采纳