建立单链表L=(1,2,3,4,5),并且逆置单链表L=(5,4,3,2,1)
2条回答 默认 最新
技术专家团-小桥流水 2021-10-27 21:40关注代码如下,如有帮助,请帮忙采纳一下,谢谢。

代码:
#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; }评论 打赏 举报解决 1无用