10.26学习总结
(1)今日安排
链表逆置
题目要求:本题要求实现一个函数,将给定单向链表逆置,即表头置为表尾,表尾置为表头。
(2)源代码
#include <stdio.h> #include <stdlib.h> struct ListNode { int data; struct ListNode *next; }; struct ListNode *createlist(); /*裁判实现,细节不表*/ struct ListNode *reverse( struct ListNode *head ); void printlist( struct ListNode *head ) { struct ListNode *p = head; while (p) { printf("%d ", p->data); p = p->next; } printf("\n"); } int main() { struct ListNode *head; head = createlist(); head = reverse(head); printlist(head); return 0; } struct ListNode *reverse( struct ListNode *head ) { struct ListNode *L=(struct ListNode*)malloc(sizeof(struct ListNode));//建立新头结点 L->next=NULL; //L指针为空 struct ListNode *p; struct ListNode *q; p=head;//遍历原链表 while(p) { q=(struct ListNode*)malloc(sizeof(struct ListNode));//创建新节点 q->data=p->data; //头插法 q->next=L->next; L->next=q; p=p->next; } return L->next; };