题目
1.反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head){
}
不说了直接上代码!!
有时间再说,总之结果对了
链表气我
评论区帮我更正TT
#include<stdio.h>
#include<stdlib.h>
int main(){
struct List{
int num;
struct List*next;
}Head,*head,*p0,*p1=head=&Head,*p2,*s;
Head.num=0;
Head.next=NULL;
//create list
for(int i=1;i<=5;i++){
//create list
p2=(struct List*)malloc(sizeof(struct List));
p2->num=i;
p2->next=NULL;
p1->next=p2;
p1=p2;
//output
printf("%d->",p1->num);
}
printf("NULL\n");
//reverse list
p0=NULL;
p1=&Head;//printf("%d\n",p2->num);
p2=Head.next;
for(int i=1;i<=5;i++){
p1->next=p0;
p0=p1;
p1=p2;
p2=p2->next;
//output list
//printf("%d->",p1->num);
}
p1->next=p0;
for(int i=1;i<=5;i++){
printf("%d->",p1->num);
p1=p1->next;
}
printf("NULL");
}
后期作品
全部标记都有了
#include<stdio.h>
#include<stdlib.h>
int main(){
struct ListNode{
int num;
struct ListNode*next;
}Head,*p0,*p1,*p2;//Head是头地址,p0是前指针,p1是现指针,p2是后指针
Head.num=0;
Head.next=NULL;
//create list
struct ListNode* createList(struct ListNode* p1, int n){
for(int i=1;i<=n;i++){
//赋值给现指针
p1->num=i;
//分配新空间给后指针
p2=(struct ListNode*)malloc(sizeof(struct ListNode*));
//把现指针指向后指针
p1->next=p2;
//把后指针变成现指针
if(i<=4)p1=p2;
}
//最后一个指针指向空
p1->next=NULL;//现指针指向后指针后把后指针变成空指针不会让现指针指向空指针而是会输出0
}
//reverse list
struct ListNode* reverseList(struct ListNode* head){
//把空指针变成前指针,head指针变成现指针,现指针指向的指针变成后指针
p0=NULL;
p1=head;
p2=head->next;
while(1){
//把现指针指向前指针
p1->next=p0;
//检测后指针是不是空指针,如果是就终止循环
if(p2==NULL){break;}
//把现指针变成前指针,后指针变成现指针,后指针指向的指针变成后指针
p0=p1;
p1=p2;
p2=p2->next;
}
}
//output list
struct ListNode* outputList(struct ListNode* head){
while(1){
//检测现指针是否为空指针,如果是就终止循环
if(head==NULL)break;
//把现指针数值输出
printf("%d->",head->num);
//把现指针变为后指针
head=head->next;
}
printf("NULL\n");
}
//create and output list
createList(&Head,5);outputList(&Head);
//reverse and output list
reverseList(&Head);outputList(p1);//把reverseList后的现指针交给outputlist
}
答案是完美的
1->2->3->4->5->NULL
5->4->3->2->1->NULL