第四周 项目 3

来源:互联网 发布:淘宝休闲裤背景素材 编辑:程序博客网 时间:2024/06/05 04:22

list.h 代码

/**Copyright (c) 2017,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:*作    者:陈军正*完成日期:2017年9月26日*版 本 号:v1.0**问题描述:设计一个算法, 将一个带头结点的数据域依次为 a1, a2, …, an(n≥3) 的单链表的所*有结点逆置, 即第一个结点的数据域变为 an, …, 最后一个结点的数据域为 a1。 实现这个算法,并完成测试。*/typedef struct LNode{int data;struct LNode *next;}LinkList;void CreateList(LinkList *&L,int a[],int n );void DisplyList(LinkList *&L);void DestroyList(LinkList *&L);void Reverse(LinkList *&L);
main.cpp 代码

#include <iostream>#include <list.h>using namespace std;int main(){int a[6] = { 1,2,3,4,5,6 };LinkList *L;CreateList(L,a,6);cout << "逆置前:";DisplyList(L);Reverse(L);cout << "逆置后:";DisplyList(L);system("pause");return 0;}

list.cpp 代码

#include <list.h>#include <iostream>#include <malloc.h>using namespace std;void CreateList(LinkList *&L,int a[], int n){LinkList *S;L = (LinkList *)malloc(sizeof(LinkList));int i;L->next = NULL;for (i = 0; i<n; ++i){S = (LinkList *)malloc(sizeof(LinkList));S->data = a[i];S->next = L->next;L->next = S;}}void DisplyList(LinkList *&L){LinkList *p;p = L->next;while (p != NULL){cout << p->data << " ";p = p->next;}}void Reverse(LinkList *&L){LinkList *p = L->next, *q;L->next = NULL;while (p!=NULL){q = p->next;p->next = L->next;L->next = p;p = q;}}void DestroyList(LinkList *&L){LinkList *p = L, *q=p->next;while (q != NULL){free(p);q = p->next;}free(p);}

运行结果


总结:熟悉链表的建立和输出,以及链表的逆置

原创粉丝点击