第三週 項目4-順序表應用 (2)

list.h 代碼:

/*
*Copyright (c) 2017,煙臺大學計算機與控制工程學院
*All rights reserved.
*文件名稱:
*作    者:陳軍正
*完成日期:2017年9月20日
*版 本 號:v1.0
*
*問題描述:刪除元素在[x,y]之間的所有元素,要求算法的時間複雜度爲O(n),空間複雜度爲O(1)刪除元素在[x,y]之間的所有元素,要求算法的時間複雜度爲O(n),空間複雜度爲O(1刪除元素在[x,y]之間的所有元素,要求算法的時間複雜度爲O(n),空間複雜度爲O(1刪除元素在[x,y]之間的所有元素,要求算法的時間複雜度爲O(n),空間複雜度爲O(1*
*/
#ifndef LIST_H_INCLUDED
#define LIST_H_INCLUDED
#define MaxSize 50
typedef struct
{
    int data [MaxSize];
    int length;
}SqList;

void CreateList(SqList *&,int [],int );
void DispList(SqList *&);
void Chanage (SqList *&L);

#endif // LIST_H_INCLUDED


main.cpp 代碼:

#include <iostream>
#include "list.h"
using namespace std;
int main ()
{
    int x[6] = {1,2,3,4,5,6};
    SqList *sq;
    CreateList(sq,x,6);
    DispList(sq);
    cout<<endl;
    Chanage (sq);
    DispList(sq);


    return 0;
}

list.cpp 代碼:

#include "malloc.h"
#include "list.h"
#include <iostream>
using namespace std;
void CreateList(SqList *&L,int a[],int n)
{
    int i;
    L = (SqList *)malloc(sizeof(SqList));
    for (i = 0;i<n;++i)
    {
        L->data[i] = a[i];
    }
    L->length = n;
}
void DispList(SqList *&L)
{
    int i;
    for(i=0;i<L->length;++i)
    {
        cout<<L->data[i]<<" ";
    }
}

void Chanage (SqList *&L)
{
    SqList *sq1;
    sq1 = (SqList *)malloc(sizeof(SqList));
    int i = 0,j = L->length-1,q=0;
    while (i != L->length)
    {
        if (L->data[i]%2 == 0)
        {
            sq1->data[j] = L->data[i];
            --j;
            ++i;
        }
        else
        {
            sq1->data[q] = L->data[i];
            ++i;
            ++q;
        }
    }
    sq1->length = L->length;
    L=sq1;
}

運行結果:

知識點總結:free()釋放的是指針指向的內存!注意!釋放的是內存,不是指針!指針並沒有被釋放,指針仍然指向原來的存儲空間。指針是一個變量,只有程序結束時才被銷燬。釋放了內存空間後,原來指向這塊空間的指針還是存在!只不過現在指針指向的內容的垃圾,是未定義的,所以說是垃圾。

野指針指指向一個已刪除的對象或未申請訪問受限內存區域的指針


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章