第四周 项目3 单链表应用(1)

来源:互联网 发布:淘宝客能赚钱吗 编辑:程序博客网 时间:2024/06/06 07:23

问题及描述:

/*  copyright (t) 2016,烟台大学计算机学院  *All rights reserved.  *文件名称:11.cpp  *作者:白晓娟 *完成日期:2016年9月22日  *版本号:v1.0  *问题描述:设计一个算法,将一个带头结点的数据域依次为a1,a2,…,an(n≥3)的单链表的所有结点逆置,即第一个结点的数据域变为an,…,最后一个结点的数据域为a1。实现这个算法,并完成测试。  *输入描述:无  *程序输出:逆置后的单链表中的各节点  */  

代码:

main.cpp:

#include <stdio.h>  #include <malloc.h>  #include "list.h"  int main()  {      LinkList *l;      ElemType a[8]={5,3,10,4,11,6,7,9};      CreateListR(l,a,8);      printf("逆置前单链表各节点为:\n");      DispList(l);      Reverse(l);      printf("逆置后单链表各节点为:\n");      DispList(l);      return 0;  } 

list.cpp:

#include <stdio.h>  #include <malloc.h>  #include "list.h"  void CreateListR(LinkList *&L,ElemType a[],int n)//尾插法建立单链表  {      LinkList *s,*r;               //头指针*s与增加的尾指针*r      int i;      L=(LinkList *)malloc(sizeof(LinkList));      r=L;      for(i=0;i<n;i++)      {          s=(LinkList *)malloc(sizeof(LinkList));          s->data=a[i];          r->next=s;          r=s;      }      r->next=NULL;                    //到尾  }  void DispList(LinkList *L)  //输出单链表  {      LinkList *p=L->next;      while(p!=NULL)      {          printf("%d ",p->data);          p=p->next;      }      printf("\n");  }  void Reverse(LinkList *&L)                      //逆置单链表  {      LinkList *p,*q;      p=L->next;                                  //p指针始终指向尾节点(开始指向头节点)      L->next=NULL;      while(p!=NULL)                              //扫描节点      {          q=p->next;                              //q指向p节点的后继节点          p->next=L->next;                        //p节点作为第一个数据节点          L->next=p;                              //插入          p=q;                                    //p指向下一节点,完成“跟随”      }  }  

list.h:

typedef int ElemType;  typedef struct LNode        //定义单链表结点类型  {      ElemType data;      struct LNode *next;     //指向后继结点  } LinkList;    void CreateListR(LinkList *&L,ElemType a[],int n);//尾插法建立单链表  void DispList(LinkList *L);                       //输出单链表  void Reverse(LinkList *&L);                       //逆置单链表  

运行结果:


知识点总结:

学习了逆置单链表。

心得体会:

巩固了基础,学习了新运算。



0 0
原创粉丝点击