建立单链表L=(1,2,3,4,5),并且逆置单链表L=(5,4,3,2,1)
代码如下,如有帮助,请帮忙采纳一下,谢谢。
代码:
#include <stdio.h>
#include <stdlib.h>
struct StNode
{
int data;
struct StNode* next;
};
//创建节点
struct StNode* CreateNode(int d)
{
struct StNode* node = (struct StNode*)malloc(sizeof(struct StNode));;
node->data = d;
node->next = 0;
return node;
}
//创建链表
struct StNode* CreateList()
{
struct StNode* head,*p,*t;
int data;
head = 0;
p = head;
t = head;
printf("创建链表,请输入链表数据:");;
while( 1)
{
scanf("%d",&data);
t = CreateNode(data);
if(head ==0)
{
head = t;
p = head;
}
else
{
p->next = t;
p = t;
}
if(getchar() == '\n') break;
}
return head;
}
//打印链表
void Display(struct StNode* head)
{
while(head)
{
printf("%d ",head->data);
head = head->next;
}
printf("\n");
}
//链表逆序
StNode* Reverse(struct StNode* head)
{
struct StNode *next = NULL;
struct StNode *prev = NULL;
while (head)
{
next = head->next;
head->next = prev;
prev = head;
head = next;
}
return prev;
}
int main()
{
struct StNode* list1 = CreateList();
struct StNode* list2 = Reverse(list1);
//打印链表
printf("逆序后的链表:");
Display(list2);
return 0;
}