/*
*Copyright (c) 2017,煙臺大學計算機與控制工程學院
*All rights reserved.
*文件名稱:
*作 者:陳軍正
*完成日期:2017年9月20日
*版 本 號:v1.0
*/
#include <iostream>
#include "malloc.h"
using namespace std;
#define MaxSize 50
typedef struct
{
int data [MaxSize];
int length;
}Sqlist;
void CreateList (Sqlist *&L,int a[],int n); ///創建線性表
void DispList (Sqlist *&L); ///輸出線性表
bool EmptyList (Sqlist *&L); ///判斷線性表是否爲空
void ListLength(Sqlist *&L); ///判斷線性表的長度
void GetElem(Sqlist *&L,int n);/// 按位置查找元素
int LocateElem(Sqlist *&L,int n);///查找元素的位置
bool ListInsert(Sqlist *&L,int n,int w); ///線性表元素插入
bool ListDelete(Sqlist *&L,int i,int &e); ///線性表元素刪除
void InitList(Sqlist *&L) ; ///線性表初始化
void DestroyList(Sqlist *&L);///摧毀線性表
int main()
{
int i,n,c,w,s,y,z;
int x[6] = {0,1,2,3,4,5};
Sqlist *sq;
CreateList(sq,x,6); ///創建線性表
DispList(sq); ///輸出線性表
ListLength(sq);///線性表的長度
cout<<"請輸入您想查詢的位置:";
cin>>i;
GetElem(sq,i); ///按位置查找元素
cout<<"請輸入您想確定的元素:";
cin>>n;
LocateElem(sq,n);///查找元素的位置
cout<<"請輸入想要插入的數據和位置:";
cin>>c>>w;
ListInsert(sq,c,w); ///插入線性表元素
DispList(sq); ///線性表輸出
cout<<"請輸入您想要刪除的位置和元素:";
cin>>y>>z;
ListDelete(sq,y,z); ///刪除線性表
DispList(sq); ///輸出線性表
InitList(sq); ///初始化線性表
DestroyList(sq); ///摧毀線性表
return 0;
}
void CreateList (Sqlist *&L,int a[],int n) ///創建線性表
{
L = (Sqlist *)malloc(sizeof(Sqlist)); ///爲線性表開闢動態內存空間
int i;
for(i=0; i<n; i++)
{
L->data[i] = a[i];
}
cout<<endl;
L->length = n;
}
void DispList (Sqlist *&L) ///輸出線性表
{
if (EmptyList(L))
for (int i=0; i<L->length; i++)
cout<<L->data[i]<<" ";
cout<<endl;
}
bool EmptyList (Sqlist *&L) ///判斷線性表是否爲空
{
return L->length;
}
void ListLength(Sqlist *&L) ///線性表的長度
{
cout<<"線性表的長度爲:";
cout<<L->length<<endl;
}
void GetElem(Sqlist *&L,int n) ///查找線性表的某元素
{
cout<<L->data[n-1]<<endl;
}
int LocateElem(Sqlist *&L,int n) ///元素的位置
{
int i =0;
while (L->data[i] !=n && i<L->length)
i++;
if (i > L->length)
return 0;
else
cout<<i+1<<endl;
}
bool ListInsert(Sqlist *&L,int n,int w) ///插入元素
{
int i,q;
q = L->length;
if ( w>0 && w<L->length+2) ///判斷刪除位置是否正確
while (q != w-1)
{
L->data[q] = L->data[q-1];
q--;
}
else
{
cout<<"您輸入的範圍不對。"<<endl;
return false;
}
L->data[w-1] = n;
L->length++;
}
bool ListDelete(Sqlist *&L,int i,int &e) ///刪除線性表的某元素
{
int j;
if (i<1 || i>L->length) ///判斷刪除位置是否正確
return false;
i--;
e=L->data[i];
for (j=i; j<L->length-1; j++)
L->data[j]=L->data[j+1];
L->length--;
return true;
}
void InitList(Sqlist *&L) /// 初始化線性表
{
L=(Sqlist *)malloc(sizeof(Sqlist));///爲線性表開闢動態內存空間
L->length=0;
}
void DestroyList(Sqlist *&L) ///摧毀線性表
{
free(L);
}
運行結果:
知識點總結:將所有代碼放在一個文件裏,感覺非常複雜,查找起來也非常麻煩,所以,下一步要習慣將數據分佈在其他文件中,此外註釋有着很大作用,方便以後查看,能夠快速看懂