




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
順序表實驗報告一、實驗目的掌握線性表的順序表表示及其基本操作的實現算法;掌握利用順序表解決問題的方法。二、實驗內容(1)編寫代碼實現順序表的類型定義及順序表的初始化、插入、刪除、取元素、輸出等操作;(2)應用所實現的順序表,從以下所列問題中至少選其一(當然,兩個都寫分數肯定會更高哦!)進行求解:①設計并實現集合的表示集合的創建、輸出、并集運算、交集運算等操作;②設計并實現一個簡單的學生信息管理(包括信息錄入、顯示、查找、插入、刪除等操作);(3)針對所選擇的求解問題,編寫測試程序,并選取適當的測試數據,通過運行結果驗證算法和程序設計的正確性。三、實驗過程1.順序表的實現這里的內容是用C語言去實現順序表及其的基本操作,也是實驗的核心部分,希望學弟學妹們可以好好體會,代碼我就不給出了。下面的問題我會使用C++的vector容器來實現,本質上此部分內容就是在寫一個簡單的vector,這也就是為什么C++是C語言的補充。大家在做實驗的時候只需參考一下我的解法,并把vector換成自己實現的順序表就可以,記得加上運行結果或結果截圖,我就不一一給出結果。對C++的vector源碼感興趣的同學可以看一看《STL源碼剖析》。2.集合問題#include<cstdio>
#include<iostream>
#include<vector>
#include<algorithm>
usingnamespacestd;
typedefvector<int>ArrayList;
voidcreateArrayList(ArrayList&A,intsize);//創建集合
voidoutputArrayList(ArrayListA);//輸出集合
voidArrayListUnion(ArrayListA,ArrayListB,ArrayList&C);//求并集
voidArrayListIntersection(ArrayListA,ArrayListB,ArrayList&C);//求交集
voidArrayListSubtraction(ArrayList&A,ArrayListB,ArrayList&C);//求差集
intmain()
{
ArrayListA,B,C;
//創建集合A,B
intA_size,B_size;
printf("創建SectionA:\n");
printf("\t\t元素個數:");
scanf("%d",&A_size);
createArrayList(A,A_size);
printf("創建SectionB:\n");
printf("\t\t元素個數:");
scanf("%d",&B_size);
createArrayList(B,B_size);
//輸出
printf("SectionA=");
outputArrayList(A);
printf("\n");
printf("SectionB=");
outputArrayList(B);
printf("\n");
//求C=A∪B
ArrayListUnion(A,B,C);
printf("A∪B=");
outputArrayList(C);
printf("\n");
//清空C
C.clear();
//求C=A∩B
ArrayListIntersection(A,B,C);
printf("A∩B=");
outputArrayList(C);
printf("\n");
//求C=A-B
ArrayListSubtraction(A,B,C);
printf("A-B=");
outputArrayList(A);
return0;
}
//創建集合
voidcreateArrayList(ArrayList&A,intsize)
{
printf("\t\t請輸入%d個元素:",size);
for(inti=0;i<size;i++)
{
inte;
scanf("%d",&e);
A.push_back(e);
}
}
//輸出集合
voidoutputArrayList(ArrayListA)
{
printf("{");
for(inti=0;i<A.size();i++)
{
if(i==A.size()-1)printf("%d",A[i]);
elseprintf("%d,",A[i]);
}
printf("}\n");
}
//求并集
voidArrayListUnion(ArrayListA,ArrayListB,ArrayList&C)
{
//復制A集合
for(inti=0;i<A.size();i++)
C.push_back(A[i]);
for(inti=0;i<B.size();i++)
{
ArrayList::iteratorit=find(A.begin(),A.end(),B[i]);
if(it==A.end())C.push_back(B[i]);
}
}
//求交集
voidArrayListIntersection(ArrayListA,ArrayListB,ArrayList&C)
{
for(inti;i<B.size();i++)
{
ArrayList::iteratorit=find(A.begin(),A.end(),B[i]);
if(it!=A.end())C.push_back(B[i]);
}
}
//求差集
voidArrayListSubtraction(ArrayList&A,ArrayListB,ArrayList&C)
{
inti;
for(inti=0;i<C.size();i++)
{
ArrayList::iteratorit=find(A.begin(),A.end(),C[i]);
if(it!=A.end())A.erase(it);
}
}3.學生信息管理#include<cstdio>
#include<cstring>
#include<iostream>
#include<vector>
#include<algorithm>
usingnamespacestd;
#defineMAX20
typedefstructstudent{
charname[MAX];
charsex[4];
intage;
charbirth[MAX];
}Student;
typedefvector<Student>Students;
boolequal(Student*a,Student*b);//判斷元素是否相等
voidinterface();//界面
voidaddStudent(Students&stus);//增加學生
voiddetStudent(Students&stus,charname[MAX]);//刪除學生
voidmodifyStudent(Students&stus,charname[MAX]);//修改學生
voidviewStudent(Students&stus);//查看學生
voidsortStudent(Students&stus);//排序
intmain()
{
intchoice=0,n=0;
Studentsstus;
while(1)
{
system("cls");
interface();
printf("請輸入功能編號:");
scanf("%d",&choice);
switch(choice)
{
case1://查看
system("cls");
viewStudent(stus);
system("pause");
break;
case2://增加
system("cls");
addStudent(stus);
system("pause");
break;
case3://刪除
system("cls");
charname1[MAX];
printf("請輸入要刪除的學生的姓名:");
scanf("%s",name1);
detStudent(stus,name1);
system("pause");
break;
case4://修改
system("cls");
charname2[MAX];
printf("請輸入要修改的學生的姓名:");
scanf("%s",name2);
modifyStudent(stus,name2);
system("pause");
break;
case5://排序
system("cls");
sortStudent(stus);
printf("編排成功");
system("pause");
break;
default://退出
exit(0);
}
}
return0;
}
boolequal(Studenta,Studentb)
{
if(!strcmp(,))
returntrue;
else
returnfalse;
}
//界面
voidinterface()
{
printf("-----------學生信息管理系統-----------\n");
printf("1.查看學生信息\n");
printf("2.增加學生信息\n");
printf("3.刪除學生信息\n");
printf("4.修改學生信息\n");
printf("5.編排學生信息\n");
printf("6.退出管理系統\n");
printf("--------------------------------------\n");
}
//增加
voidaddStudent(Students&stus)
{
printf("請輸入該學生的姓名,性別,年齡和出生日期:\n");
Students;
scanf("%s",);
scanf("%s",s.sex);
scanf("%d",&s.age);
scanf("%s",s.birth);
stus.push_back(s);
}
//刪除
voiddetStudent(Students&stus,charname[MAX])
{
Students;
strcpy(,name);
Students::iteratorit;
for(it=stus.begin();it!=stus.end();it++)
if(equal(*it,s))
{
stus.erase(it);
return;
}
printf("刪除錯誤:不存在此人!\n");
}
//修改
voidmodifyStudent(Students&stus,charname[MAX])
{
students;
strcpy(,name);
Students::iteratorit=stus.begin();
for(it=stus.begin();it!=stus.end();it++)
if(equal(*it,s))
{
printf("請修改該名學生的姓名,性別,年齡和出生日期:\n");
scanf("%s%s%d%s",(*it).name,(*it).sex,&(*it).age,(*it).birth);
return;
}
printf("修改錯誤:不存在此人!\n");
}
//查看
voidviewS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 腦裂傷的護理措施
- body-language知識教學課件
- 2024年護理安全課件
- 新發展英語(第二版)綜合教程2 課件 Unit 8 Food
- 2019培訓課件教學課件
- 人教版數學六年級下冊6.2圖形與幾何練習卷含答案
- 無錫市南長區重點達標名校2025年全國新初三下學期開學大聯考試題英語試題含答案
- 云南水利水電職業學院《電視新聞節目制作》2023-2024學年第二學期期末試卷
- 2017安全生產課件
- 浙江省富陽市重點中學2025年初三中考沖刺預測卷(六)英語試題含答案
- 做新時代的忠誠愛國者
- 機械租賃簡易招標方案
- 工業機器人基礎及應用高職全套教學課件
- 醫療器械生產中的質量控制數據分析方法
- 足浴店創業計劃書
- 2024年中國私域運營洞察白皮書
- 群眾文化活動服務投標方案(技術標)
- 10KV配電室倒閘操作票
- 小學六年級治班策略
- 異想天開的科學游戲
- 移動式門式腳手架技術交底
評論
0/150
提交評論