線性表實現,建立表,插入元素,刪除元素,銷毀表,表的遍歷,表的並集交集差集。。。。。不斷更新中。。。
#include#include#include#include#define list_init_size 100//初始大小
#define error 0
#define listincrement 10//增量大小
#define ok 0
typedef int elemtype;
typedef int status;
using namespace std;
int vis[1000];
typedef struct
sqlist;
status initlist(sqlist &l)//創線性表
l.length=0;
l.listsize=list_init_size;
cout<<"新錶建立完成"if(l.length>=l.listsize+1)
l.elem=newbase;//新的基址
l.listsize+=listincrement;
}q=&(l.elem[i-1]);//q是是插入位置
for(p=&(l.elem[l.length-1]); p>=q; --p)
*q=e;//插入到*q所指向的位置
++l.length;
return ok;
}status listdelete(sqlist &l,int i,elemtype &e)//刪除元素
p=&(l.elem[i-1]);//p是被刪除元素的位置
e=*p;//被刪除的元素賦值給e
q=l.elem+l.length-1;//表尾元素的位置
for(++p; p<=q; ++p)
l.length--;
return ok;
}void listunite(sqlist la,sqlist lb,sqlist &lc)//線性表合併
while(pa<=(la.elem+la.length-1)&&pb<=(lb.elem+lb.length-1))//開始有序合併
else
}while(pa<=la.elem+la.length-1)//插入la剩餘元素
while(pb<=lb.elem+lb.length-1)//插入lb剩餘元素
}void readlist(sqlist l)//遍歷線性表
}for(int i=0; imaxn)
}for(int i=0, j=1; i<=maxn+1; i++)//將vis為1的全部插入到新的表中,訪問下標終點是maxn
}}void jiaoji(sqlist l,sqlist k,sqlist &result)求l,k的交集存入result
}for(int i=0; imaxn)
}for(int i=0, j=1; i<=maxn; i++)//將vis為2的全部插入到新的表中,訪問下標終點是maxn
}}void l_k_chaji(sqlist l,sqlist k,sqlist &result)//求集合l-k的結果存入result
}for(int i=0; imaxn)
}for(int i=0, j=1; i<=maxn; i++)//將vis為2的全部插入到新的表中,其他的不管,訪問下標終點是maxn
}}int main()
cout<<"插入完成"<>m;
for(int i=0; i>e;
listinsert(k,i+1,e);
}cout<<"插入完成"
initlist(result);
l_k_chaji(l,k,result);
readlist(result);
system("pause");
return 0;
}
順序儲存線性表實現
在計算機中用一組位址連續的儲存單元依次儲存線性表的各個資料元素,稱作線性表的順序儲存結構。順序儲存結構的主要優點是節省儲存空間,因為分配給資料的儲存單元全用存放結點的資料 不考慮c c 語言中陣列需指定大小的情況 結點之間的邏輯關係沒有占用額外的儲存空間。採用這種方法時,可實現對結點的隨機訪問,即每...
線性表 順序儲存實現
linearlist.h pragma once const int maxsize 20 typedef int datatype class dataarr class linearlist linearlist.cpp include linearlist.h include using na...
線性表(順序結構實現)
背景 今天來複習 以陣列這種順序結構 實現的線性表 基本理論 線性表的定義以及實現的操作如下 實現 線性表介面,定義操作 public inte ce ilinearlistwhere t icomparable t this int index void clear void insert int...