/*線性表的插入*/
#include <iostream>
using namespace std;#define LIST_INIT_SIZE 100 //線性表的初始分配量
#define LISTINCREMENT 10 //線性表分配空間的增量
struct SqList //定義線性表結構體
{
int *elem; //存儲空間基址
int length; //當前長度
int listsize; //當前分配的容量
};
int main()
{
struct SqList InitList_Sq = //初始化結構
{
InitList_Sq.elem=new int [LIST_INIT_SIZE], //動態分配內存
InitList_Sq.length=0, //空表長度爲0
InitList_Sq.listsize=LIST_INIT_SIZE //初始存儲容量
};
int e,i; //定義插入的元素爲 e,插入的位置爲 i
for(i=0;i<InitList_Sq.length;++i) //輸出線性表裏的初始元素
{
cout<<InitList_Sq.elem[i]<<" "<<endl;
}
if(InitList_Sq.length==0) //若線性表爲空 則輸出 No Elem in it
cout<<"No Elem in it"<<endl;
while(1) //線性表插入元素的循環
{
cout<<"what are you want to insertion: ";
cin>>e; //輸入你要插入的元素
cout<<endl<<"where are you want to insertion: ";
cin>>i; //輸入你要插入的位置
if(i<1||i>InitList_Sq.length+1) //判斷插入的位置是否合理
return 0;
/* if(InitList_Sq.length>=InitList_Sq.listsize) //判斷線性表的長度是否大於當前的分配存儲容量
{
InitList_Sq.elem=new int [InitList_Sq.elem,InitList_Sq.listsize+LISTINCREMENT]; //若長度大於容量,說明當前存儲空間已滿,增加分配內存
InitList_Sq.listsize += LISTINCREMENT; //將存儲容量的值改爲重新分配後的值
}*/
int *q,*p; //定義兩個指針
q=&(InitList_Sq.elem[i-1]); //q指向插入的地址
p=&InitList_Sq.elem[InitList_Sq.length-1]; //p指向線性表的末尾
for(;p>=q;--p) //將插入的地址之後的元素右移
*(p+1)=*p;
*q=e; //將e的值賦給*q,插入線性表
++InitList_Sq.length; //表長參量增1
for(i=0;i<InitList_Sq.length;++i) //輸出線性表的所有元素
{
cout<<InitList_Sq.elem[i]<<" ";
}
cout<<endl;
}
delete [] InitList_Sq.elem; //釋放內存
delete [] InitList_Sq.elem;
return 0;
}
/* 線性表的刪除 */
#include <iostream>
using namespace std;
#define LIST_INIT_SIZE 100 //線性表的初始分配量
struct SqList //定義線性表結構體
{
int *elem; //存儲空間基址
int length; //當前長度
int listsize; //當前分配的容量
};
int main()
{
struct SqList InitList_Sq = //初始化結構
{
InitList_Sq.elem=new int [LIST_INIT_SIZE], //動態分配內存
InitList_Sq.length=3, //表長度爲3
InitList_Sq.listsize=LIST_INIT_SIZE //初始存儲容量
};
InitList_Sq.elem[0]=1;
InitList_Sq.elem[1]=2; //初始元素
InitList_Sq.elem[2]=3;
int e,i; //定義插入的元素爲 e,插入的位置爲 i
for(i=0;i<InitList_Sq.length;++i) //輸出線性表裏的初始元素
{
cout<<InitList_Sq.elem[i]<<" "<<endl;
}
if(InitList_Sq.length==0) //若線性表爲空 則輸出 No Elem in it
cout<<"No Elem in it"<<endl;
while(1) //線性表刪除元素的循環
{
cout<<endl<<"where are you want to delete: ";
cin>>i; //輸入你要刪除的位置
if(i<1||i>InitList_Sq.length) //判斷刪除的位置是否合理
return 0;
int *q,*p; //定義兩個指針
q=&(InitList_Sq.elem[i-1]); //q指向刪除的地址
p=&(InitList_Sq.elem[InitList_Sq.length-1]); //p指向線性表的末尾
for(++q;p>=q;--p) //將刪除的地址之後的元素左移
*(p-1)=*p;
--InitList_Sq.length; //表長參量減1
for(i=0;i<InitList_Sq.length;++i) //輸出線性表的剩餘元素
{
cout<<InitList_Sq.elem[i]<<" ";
}
cout<<endl;
}
delete [] InitList_Sq.elem; //釋放內存
return 0;
}
/*綜合程序*/
#include <iostream>
using namespace std;
#define LIST_INIT_SIZE 100 //線性表的初始分配量
#define LISTINCREMENT 10 //線性表分配空間的增量
struct SqList //定義線性表結構體
{
int *elem; //存儲空間基址
int length; //當前長度
int listsize; //當前分配的容量
};
int main()
{
struct SqList InitList_Sq = //初始化結構
{
InitList_Sq.elem=new int [LIST_INIT_SIZE], //動態分配內存
InitList_Sq.length=0, //空表長度爲0
InitList_Sq.listsize=LIST_INIT_SIZE //初始存儲容量
};
int e,i,key; //定義插入的元素爲 e,插入的位置爲 i
int *q,*p; //定義兩個指針
for(i=0;i<InitList_Sq.length;++i) //輸入線性表裏的初始元素
{
cout<<InitList_Sq.elem[i]<<" "<<endl;
}
if(InitList_Sq.length==0) //若線性表爲空 則輸出 No Elem in it
cout<<"No Elem in it"<<endl;
while(1)
{
cout<<"insertion or delete? 1 or 0 ? : "; //選擇插入或刪除
cin>>key;
if(key==1)
{
cout<<"what are you want to insertion: ";
cin>>e; //輸入你要插入的元素
cout<<"where are you want to insertion: ";
cin>>i; //輸入你要插入的位置
if(i<1||i>InitList_Sq.length+1) //判斷插入的位置是否合理
continue;
if(InitList_Sq.length>=InitList_Sq.listsize) //判斷線性表的長度是否大於當前的分配存儲容量
{
InitList_Sq.elem=new int [InitList_Sq.elem,InitList_Sq.listsize+LISTINCREMENT]; //若長度大於容量,說明當前存儲空間已滿,重新分配內存
InitList_Sq.listsize += LISTINCREMENT; //將存儲容量的值改爲重新分配後的值
}
q=&(InitList_Sq.elem[i-1]); //q指向插入的地址
p=&InitList_Sq.elem[InitList_Sq.length-1]; //p指向線性表的末尾
for(;p>=q;--p) //將插入的地址之後的元素右移
*(p+1)=*p;
*q=e; //將e的值賦給*q,插入線性表
++InitList_Sq.length; //表長參量增1
}
else if(key==0)
{
if(InitList_Sq.length==0)
{cout<<"線性表內無元素可刪除,請先輸入"<<endl;
continue;}
cout<<"where are you want to insertion: ";
cin>>i; //輸入你要刪除的位置
if(i<1||i>InitList_Sq.length) //判斷刪除的位置是否存在
continue;
p=&InitList_Sq.elem[i-1]; //p指向要刪除的位置
q=&InitList_Sq.elem[InitList_Sq.length-1]; //q指向表尾位置
for(++p;p<=q;--q)
*(p-1)=*p;
--InitList_Sq.length; //表長參量減1
}
else continue;
for(i=0;i<InitList_Sq.length;++i) //輸出線性表的所有元素
{
cout<<InitList_Sq.elem[i]<<" ";
}
cout<<endl;
}
delete [] InitList_Sq.elem; //釋放內存
delete [] InitList_Sq.elem;
return 0;
}