龙空技术网

单链表逆序(用三个指针)

前端全栈开发 183

前言:

眼前你们对“c语言逆序输出链表”大致比较关切,你们都想要分析一些“c语言逆序输出链表”的相关文章。那么小编同时在网上收集了一些有关“c语言逆序输出链表””的相关内容,希望朋友们能喜欢,同学们一起来学习一下吧!

需求描述:使用第三指针实现单链表逆序

typedef struct LinkNode {    int val;    struct LinkNode* next;}LinkNode;// 创建单链表void creatLinkList(LinkNode* head);//单链表逆序(用三个指针)void linkListReverseUse3Pointer(LinkNode** head);int main() {  //创建单链表    LinkNode* head = (LinkNode*)malloc(sizeof(LinkNode));    if(head == NULL) {exit(-1);}    head->next = NULL;    LinkNode* curr = head;    creatLinkList(curr);  linkListReverseUse3Pointer(&(head->next));    LinkNode* firstNode = head->next;    while (firstNode) {        printf("%d ",firstNode->val);        firstNode = firstNode->next;    }    printf("\n"); return 0; }#pragma mark - 链表逆序(用三个指针)void linkListReverseUse3Pointer(LinkNode** head) {    if(head == NULL)exit(-1);//非法输入    if(*head == NULL)exit(-1);//空链表    if((*head)->next == NULL) exit(-1);//只有一个节点,无需反转    LinkNode* curr = (*head)->next;    LinkNode* pre = *head;    pre->next = NULL;    while (curr != NULL) {        LinkNode* q = curr->next;        curr->next = pre;        pre = curr;        curr = q;    }    *head = pre;}

标签: #c语言逆序输出链表