单链表逆序生成及逆置的完整实现

来源:互联网 发布:网络采购的方式主要有 编辑:程序博客网 时间:2024/05/17 03:21

单链表逆序生成及逆置的完整实现

  • 本例中单链表数据类型定义成int型,可更改

头文件1(1.h)

宏定义及Status类型定义

宏定义

头文件2(2.h)

单链表基本操作函数与逆置函数

include"1.h"using namespace std;typedef int ElemType;typedef struct LNode{    ElemType data;    struct LNode *next;}LNode,*LinkList;LinkList init_L(void){    LinkList p=(LinkList)malloc(sizeof(LNode));    if(NULL==p)    exit(0);    p->next=NULL;    return p;}void creat_L(LinkList &l,int n){    int i;    l=(LinkList)malloc(sizeof(LNode));    l->next=NULL;    for(i=n;i>0;--i){    LinkList p=(LinkList)malloc(sizeof(LNode));    cin>>p->data;    p->next=l->next;    l->next=p;    }}Status reverse(LinkList &L){    LinkList p=L->next;    if(p==NULL||p->next==NULL)    return OK;    while(p->next!=NULL){        LinkList q=p->next;        p->next=q->next;        q->next=L->next;        L->next=q;    }    return OK;}

主函数

逆序建立单链表,随后输出;逆置单链表,再输出

#include <iostream>#include <stdio.h>#include <stdlib.h>#include "2.h"using namespace std;int main() {    int n,i;     LinkList p=init_L(),q;    printf("请输入单链表个数");    cin >> n;    creat_L(p,n);     q=p;         for(i=0;i<n;i++) {            q=q->next;             printf("[%d]",q->data) ;             if(q->next==NULL){                    break;             }         }     printf("\n");     reverse(p);    for(i=0;i<n;i++) {        p=p->next;     printf("[%d]",p->data) ;     if(p->next==NULL){        break;     }     } }
原创粉丝点击