10.9逆置单链表

来源:互联网 发布:搞怪照片软件下载 编辑:程序博客网 时间:2024/05/17 08:46
//10.9 已知单链表,写一算法将其逆置#include <stdio.h>#include <stdlib.h>typedef struct node{char data;//data 为ijiedian的数据信息struct node *next;              //next 为指向后继节点的指针}LNode;                             //单链表节点类型LNode *CreateLinkList()             //生成单链表{LNode *head, *p, *q;char x;head = (LNode *)malloc(sizeof(LNode));    //生成头节点head->next = NULL;p = head;q = p;                                    //指针q 始终指向链尾节点printf("Input any char string:\n");scanf("%c", &x);while (x != '\n'){p = (LNode *)malloc(sizeof(LNode));p->data = x;p->next = NULL;q->next = p;                          //在链尾插入q = p;scanf("%c", &x);}return head;                              //返回指向单链表的头指针head}void Convert(LNode *H)                        //单链表逆置{LNode *p, *q; p = H->next;                              //p指向剩余节点链表的第一个数据节点H->next = NULL;                           //新链表H初始化为空while (p != NULL){q = p;                                //从剩余节点链表中取出第一个节点p = p->next;                          //p继续指向剩余节点链表新的第一个数据节点q->next = H->next;                    //将取出的节点*q插入到新链表H的链首H->next = q;}}int main(){LNode *A, *p;A = CreateLinkList();                     //生成单链表AConvert(A);                               //单链表A逆置p = A->next;                              //输出逆置后的单链表Awhile (p != NULL){printf("%c", p->data);p = p->next;}printf("\n");return 0;}

原创粉丝点击