報告使用范圍很廣。按照上級部署或工作計劃,每完成一項任務,一般都要向上級寫報告,反映工作中的基本情況、工作中取得的經驗教訓、存在的問題以及今后工作設想等,以取得上級領導部門的指導。報告,在已發布的黨、人大、政府、司法、軍隊機關的公文處理規范中, 以下是為大家整理的關于數據結構實驗報告總結5篇 , 供大家參考選擇。
數據結構實驗報告總結5篇
第一篇: 數據結構實驗報告總結
實驗二 棧
實驗名稱:棧的順序存儲結構的插入和刪除
實驗內容:本程序利用棧的順序存儲結構構造了棧,并實現了棧的插入和刪除功能。
程序流程圖:
源代碼:
#include
#include
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef int SElemType;
typedef int Status;
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
Status InitStack(SqStack *S)
{
(*S).base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!(*S).base)exit(OVERFLOW);
(*S).top=(*S).base;
(*S).stacksize=STACK_INIT_SIZE;
return OK;
}
Status Push(SqStack S,SElemType e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*(S.top+1)=e;
return OK;
}
Status Pop(SqStack S,SElemType *e)
{
if(S.top==S.base)return ERROR;
e=*--S.top;
return OK;
}
void main()
{
SqStack S;
int j;
int n,i,count=0;
SElemType e;
clrscr();
InitStack(&S);
for(i=0; ;i++)
{
scanf("%d",&S.base[i]);
if(S.base[i]==999) break;
S.top=&S.base[i];
count++;
}
for(i=0;i
第二篇: 數據結構實驗報告總結
華北電力大學
實 驗 報 告
|
|
實驗名稱 約瑟夫環
課程名稱 算法與數據結構試驗
|
|
專業班級: 學生姓名:
學 號: 成 績:
指導教師: 實驗日期:
一、 實驗名稱:約瑟夫環
二、 實驗目的
綜合應用所學的知識分析問題、解決問題,學會用單鏈表與循環鏈表解決問題,提高實際編程能力及程序調試能力。
三、 實驗要求
采用單鏈表或循環鏈表設計約瑟夫環
四、 實驗內容
約瑟夫環問題是:編號為1,2,…,n的n個人按順時針方向圍坐一圈,每人有一個正整數編號。從某個位置上的人開始報數,數到m的人便出列,下一個人(第m+1個)又從1數起,數到m的人便是第二個出列的人,依次重復下去,直到最后一個人出列。于是得到一個新的次序,試設計程序求出出列順序。輸入數據檢測結果,m=4,n=8。
五、 實驗原理
用單鏈表(或循環鏈表)存儲數據,利用循環按要求將鏈表中的數據輸出,實現約瑟夫環。
六、 實驗結果
#include
#include
#include
using namespace std;
struct person
{
int data;
person *next;
};
int main()
{
int n=0;
int m=0;
cout>n;
cout>m;
person *head=new person;
person *p=head;
for (int i=1;idata=i;
else
{
p->next=new person;
p=p->next;
p->data=i;
}//設置節點;
}
p->next=head;//連接首尾節點;
coutnext=p->next;//刪除節點;
cout
第三篇: 數據結構實驗報告總結
《數據結構與算法分析》課程設計內容體系主要內容
《數據結構課程設計》課程,可使學生深化理解書本知識,致力于用學過的理論知識和上機取得的實踐經驗,解決具體、復雜的實際問題,培養軟件工作者所需的動手能力、獨立解決問題的能力。該課程設計側重軟件設計的綜合訓練,包括問題分析、總體結構設計、用戶界面設計、程序設計基本技能和技巧、多人合作,以至一整套軟件工作規范的訓練和科學作風的培養。
一、 課程設計要求
學生必須仔細閱讀《數據結構與算法分析》課程設計方案,認真主動完成課程設計的要求。有問題及時主動通過各種方式與教師聯系溝通。
學生要發揮自主學習的能力,充分利用時間,安排好課程設計的時間計劃,并在課程設計過程中不斷檢測自己的計劃完成情況,及時的向教師匯報。
課程設計按照教學要求需要兩周時間完成,兩周中每天(按每周5天)至少要上3-4小時的機來調試C語言設計的程序,總共至少要上機調試程序30小時。
二、 數據結構課程設計的具體內容
本次課程設計完成如下模塊(共9個模塊,學生可以在其中至少挑選6個功能塊完成,但有**號的模塊是必須要選擇的)
(1) 運動會分數統計**
任務:參加運動會有n個學校,學校編號為1……n。比賽分成m個男子項目,和w個女子項目。項目編號為男子1……m,女子m+1……m+w。不同的項目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學生自己設定。(mnext=q->next;
printf("%4d",q->data);
if(i%10==0)printf("\n");
free(q);
}
R=p;
return R;
}
/*輸出函數*/
void OutRing(int n,LinkList R)
{
int i;
ListNode *p;
p=R;
for(i=1;inext)
{
printf("%4d",p->data);
if(i%10==0) printf("\n");
}
printf("\n");
printf("猴大王的號碼:\n");
printf("4%d",p->next);
}
/*主函數*/
void main()
{
LinkList R;
int n,k;
LinkList InitRing(int n,LinkList R );
printf("猴子的總數N:");
scanf("%d",&n);
printf("報到要被淘汰數字 K:");
scanf("%d",&k);
printf("被淘汰的猴子:\n");
R=InitRing(n,R);
R=DeleteDeath(n,k,R);
printf("\n");
OutRing(n,R);
}
實驗結果:
實驗2 訂票系統任務:通過此系統可以實現如下功能:
錄入:可以錄入航班情況(數據可以存儲在一個數據文件中,數據結構、具體數據自定)
查詢:可以查詢某個航線的情況(如,輸入航班號,查詢起降時間,起飛抵達城市,航班票價,票價折扣,確定航班是否滿倉);可以輸入起飛抵達城市,查詢飛機航班情況;
訂票:可以訂票(訂票情況可以存在一個數據文件中,結構自己設定),如果該航班已經無票,可以提供相關可選擇航班;
退票:可退票,退票后修改相關數據文件;客戶資料有姓名,證件號,訂票數量及航班情況,訂單要有編號。
修改航班信息:當航班信息改變可以修改航班數據文件
要求:根據以上功能說明,設計航班信息,訂票信息的存儲結構,設計程序完成功能;
實驗內容:
源程序:
#include
#include
#include
#include
#include
#include
#include
#define TRUE 1
#define FALSE 0
typedef int BOOL;
#define NEW(type, size) (type*)malloc(sizeof(type) * size)
typedef struct _date { /* 日期 */
int m_year;
int m_month;
int m_day;
} DATE;
typedef struct _time { /* 時間 */
int m_hour;
int m_min;
} TIME;
typedef struct _flight { /* 航班數據 */
int m_fltno; /* 航班號,若此成員為-1,則表示此航班未使用 */
char m_szFrom[30]; /* 起飛港 */
char m_szPass[30]; /* 途經港 */
char m_szTo[30]; /* 到達港 */
TIME m_start; /* 起飛時間 */
TIME m_arrive; /* 到達時間 */
TIME m_fly; /* 飛行固定時間 */
int m_people; /* 乘客限額 */
} FLIGHT, *PFLIGHT;
typedef struct _passengernode { /* 乘客數據 */
char m_szName[20]; /* 姓名 */
char m_szCorp[30]; /* 單位 */
char m_szNumber[19]; /* 身份證號,考慮到字母的情況,故使用字符串 */
DATE m_Date; /* 訂票日期 */
int m_fltno; /* 航班號 */
int m_seatno; /* 座位號 */
} PASSENGER, *PPASSENGER;
typedef struct _psgnode { /* 乘客結點 */
PASSENGER m_psg;
struct _psgnode *next;
} NODE, *PNODE;
/* 清空鍵盤緩沖區 */
void ClearBuffer(void);
/* 讀取航班數據 */
void ReadFlight(FLIGHT fltlist[]);
/* 讀取乘客數據 */
void ReadPassenger(PNODE psglist);
/* 添加航班 */
BOOL AddFlight(FLIGHT fltlist[], PFLIGHT fltdata);
/* 刪除航班 */
void DelFlight(FLIGHT fltlist[], int index);
/* 添加乘客 */
void AddPassenger(PNODE psglist, PPASSENGER psgdata);
/* 刪除乘客 */
BOOL DelPassenger(PNODE psglist, int index);
/* 清空乘客鏈表 */
void ClearPsgList(PNODE psglist);
/* 取得乘客總數 */
unsigned int GetPsgCount(PNODE psglist);
BOOL datecmp(DATE* date1, DATE* date2);
void Book(FLIGHT fltlist[], PNODE psglist);
void query(FLIGHT fltlist[], PNODE psglist);
void fltnumber(FLIGHT fltlist[]);
void psgname (PNODE psglist);
void fromto (FLIGHT fltlist[]);
void fltdat(FLIGHT fltlist[], PNODE psglist);
/* 保存航班數據 */
void SaveFlight(FLIGHT fltlist[]);
/* 保存乘客數據 */
void SavePassenger(PNODE psglist);
/* 退出 */
void Quit(FLIGHT fltlist[], PNODE psglist);
BOOL datecmp(DATE* date1, DATE* date2)
{
return (date1->m_year == date2->m_year && date1->m_month == date2->m_month
&& date1->m_day == date2->m_day);
}
BOOL timecmp(TIME* time1, TIME* time2)
{
return (time1->m_hour == time2->m_hour && time1->m_min == time2->m_min);
}
void ClearBuffer(void)
{
getchar();
}
void ReadFlight(FLIGHT fltlist[])
{
FILE *fp;
if ((fp = fopen("", "rb")) != NULL)
fread(fltlist, sizeof(FLIGHT), 40, fp);
else
{
int i;
for (i = 0; i < 40; i++)
fltlist[i].m_fltno = -1;
}
fclose(fp);
}
void ReadPassenger(PNODE psglist)
{
FILE *fp;
if ((fp = fopen("", "rb")) == NULL)
psglist->next = NULL;
else
{
int i, n;
fread(&n, sizeof(int), 1, fp);
for (i = 0; i < n; i++)
{
PASSENGER psg;
fread(&psg, sizeof(PASSENGER), 1, fp);
AddPassenger(psglist, &psg);
}
}
}
BOOL AddFlight(FLIGHT fltlist[], PFLIGHT fltdata)
{
int i;
BOOL bResult = FALSE;
for (i = 0; i < 40; i++)
{
if (fltlist[i].m_fltno == -1)
{
memcpy(&fltlist[i], fltdata, sizeof(FLIGHT));
bResult = TRUE;
break;
}
}
return bResult;
}
void DelFlight(FLIGHT fltlist[], int index)
{
fltlist[index].m_fltno = -1;
}
void AddPassenger(PNODE psglist, PPASSENGER psgdata)
{
PNODE p, q;
for (p = psglist; p->next != NULL; p = p->next)
;
q = NEW(NODE, 1);
memcpy(&q->m_psg, psgdata, sizeof(PASSENGER));
q->next = NULL;
p->next = q;
}
BOOL DelPassenger(PNODE psglist, int index)
{
int i = 0;
PNODE p, q;
for (p = psglist->next; p->next != NULL; p = p->next)
i++;
if (p != NULL && i == index - 1)
{
q = p->next;
p->next = q->next;
free(q);
return TRUE;
}
else
return FALSE;
}
void ClearPsgList(PNODE psglist)
{
PNODE p = psglist->next, q;
while (p != NULL && p->next != NULL)
{
q = p;
p = p->next;
free(q);
}
}
unsigned int GetPsgCount(PNODE psglist)
{
PNODE p;
unsigned int s = 0;
for (p = psglist->next; p != NULL; p = p->next)
s++;
return s;
}
void Book(FLIGHT fltlist[], PNODE psglist)
{
char c = "y";
BOOL b;
while (c == "y" || c == "Y")
{
int i;
PASSENGER psg;
printf("請輸入航班號:");
scanf("%d", &;
while >= 10000 || < 0)
{
printf("請重新輸入:");
scanf("%d", &;
}
for(i = 0; i < 40; i++)
{
if(fltlist[i].m_fltno ==
{
PNODE p;
BOOL *q;
int j;
printf("請輸入訂票日期:(yyyy,mm,dd)");
scanf("%d,%d,%d", & & & q = NEW(int, fltlist[i].m_people);
for (j = 0; j < fltlist[i].m_people; j++)
q[j] = FALSE;
for (p = psglist->next; p != NULL; p = p->next)
{
if(datecmp(&p->, & &&
== p->
q[p-> - 1] = TRUE;
}
printf("以下座位尚未有人訂:");
for (j=0; j < fltlist[i].m_people; j++)
{
if (!q[j])
printf("%d ", j + 1);
}
printf("\n請輸入訂票座位號:");
scanf("%d", &;
b = FALSE;
do
{
int k;
if > 0 && next; p != NULL; p = p->next)
{
if(strcmp(p->, name) == 0)
{
b = TRUE;
printf("姓名:%s 單位:%s 身份證號:%s\n", p->,
p->, p->;
printf("訂票日期:%d-%d-%d ", p-> p-> p-> printf("航班號:%d 座位號:%d", p->, p->; break;
}
}
if (!b)
{
printf("查無此人,按任意鍵退出");
getch();
return;
}
printf("是否繼續查詢(y/n)");
ClearBuffer();
c = getchar();
}
}
void fromto (FLIGHT fltlist[])
{
char c = "y";
while (c == "y" || c == "Y")
{
BOOL b = FALSE;
char from[30], to[30];
int i;
printf("請輸入起飛港:");
scanf("%s", from);
printf("請輸入到達港:");
scanf("%s", to);
for(i = 0; i < 40; i++)
{
if(strcmp(fltlist[i].m_szFrom,from)==0)
{
if(strcmp(fltlist[i].m_szTo,to)==0)
{
b=TRUE;
break;
}
}
}
if(b)
{
printf("%s--%s--%s\n",fltlist[i].m_szFrom,fltlist[i].m_szPass,fltlist[i].m_szTo);
printf("起飛時間:%2d:%02d 到達時間:%2d:%02d 飛行固定時間:%2d:%02d\n",fltlist[i].,fltlist[i].,fltlist[i].,fltlist[i].,fltlist[i].,fltlist[i].;
printf("乘客限額:%d",fltlist[i].m_people);
}
else
printf("無此飛機");
getch();
printf("是否繼續查詢");
ClearBuffer();
c = getchar();
}
}
void fltdat(FLIGHT fltlist[], PNODE psglist)
{
int people[40], i;
DATE date;
PNODE p;
for (i = 0; i < 40; i++)
people[i] = 0;
printf("請輸入您要查詢的日期(yyyy,mm,dd):");
scanf("%d,%d,%d", &, &, &;
for (p = psglist->next; p != NULL; p=p->next)
{
if (datecmp(&date, &p->)
{
for(i=0;i
people[i]++;
}
}
}
for (i = 0; i < 40; i++)
{
if (people[i] > 0)
{
printf("%d %s--%s--%s 人數:%d", fltlist[i].m_fltno, fltlist[i].m_szFrom,
fltlist[i].m_szPass, fltlist[i].m_szTo, people[i]);
}
}
getch();
}
void Add(FLIGHT fltlist[])
{
char c = "y";
while (c == "y" || c == "Y")
{
FLIGHT flt;
BOOL b;
printf("請輸入航班號(1 - 10000):");
scanf("%d", &;
printf("請輸入起飛港:");
scanf("%s", ;
printf("請輸入途經港:");
scanf("%s", ;
printf("請輸入到達港:");
scanf("%s", ;
printf("請輸入起飛時間(hh:mm):");
scanf("%d:%d", & & printf("請輸入到達時間(hh:mm):");
scanf("%d:%d", & & printf("請輸入飛行固定時間(hh:mm):");
scanf("%d:%d", & & printf("請輸入乘客限額:");
scanf("%d", &;
ClearBuffer();
if (AddFlight(fltlist, &flt))
printf("添加成功,");
else
printf("添加失敗,");
printf("繼續添加航班嗎(Y/N)");
c = getchar();
}
}
void Del(FLIGHT fltlist[])
{
BOOL b = FALSE;
int i, fltno;
char c = "y";
while (c == "y" || c == "Y")
{
printf("可以取消的航班號:");
for (i = 0; i < 40; i++)
{
if (fltlist[i].m_fltno != -1)
{
b = TRUE;
printf("%d ", fltlist[i].m_fltno);
}
}
if (!b)
{
printf("無\n按任意鍵返回。");
getch();
return;
}
printf("\n請輸入要取消的航班號:");
scanf("%d", &fltno);
for (i = 0; i < 40; i++)
{
if (fltlist[i].m_fltno == fltno)
{
DelFlight(fltlist, i);
break;
}
}
printf("繼續刪除嗎(y/n)");
ClearBuffer();
c = getchar();
}
}
void Query(FLIGHT fltlist[])
{
char c = "y";
while (c == "y" || c == "Y")
{
BOOL b = FALSE;
int i, fltno;
printf("可以查詢的航班號:");
for (i = 0; i < 40; i++)
{
if (fltlist[i].m_fltno != -1)
{
b = TRUE;
printf("%d ", fltlist[i].m_fltno);
}
}
if (!b)
{
printf("無\n按任意鍵返回。");
getch();
return;
}
printf("\n請輸入要查詢的航班號:");
scanf("%d", &fltno);
for (i = 0; i < 40; i++)
{
if (fltlist[i].m_fltno == fltno)
{
printf("%s--%s--%s 乘客限額:%d\n", fltlist[i].m_szFrom,
fltlist[i].m_szPass, fltlist[i].m_szTo, fltlist[i].m_people);
printf("起飛時間:%2d:%02d 到達時間:%2d:%02d 飛行固定時間:%2d:%02d\n",
fltlist[i]., fltlist[i].,
fltlist[i]., fltlist[i].,
fltlist[i]., fltlist[i].;
break;
}
}
printf("繼續查詢嗎(y/n)");
ClearBuffer();
c = getchar();
}
}
void OneDay(FLIGHT fltlist[], PNODE psglist)
{
char c = "y";
while (c == "y" || c == "Y")
{
DATE date;
int people[40], i;
PNODE p;
for (i = 0; i < 40; i++)
people[i] = 0;
printf("請輸入您要管理的日期(yyyy,mm,dd):");
scanf("%d,%d,%d", &, &, &;
for (p = psglist->next; p != NULL; p = p->next)
{
if (datecmp(&p->, &date))
{
for (i = 0; i < 40; i++)
{
if (fltlist[i].m_fltno == p->
people[i]++;
}
}
}
for (i = 0; i < 40; i++)
{
if (fltlist[i].m_fltno != -1)
{
printf("%d %s--%s--%s 人數:%d\n", fltlist[i].m_fltno,
fltlist[i].m_szFrom, fltlist[i].m_szPass, fltlist[i].m_szTo,
people[i]);
}
}
printf("繼續管理嗎(y/n)");
ClearBuffer();
c = getchar();
}
}
void MultiDay(FLIGHT fltlist[], PNODE psglist)
{
char c = "y";
while (c == "y" || c == "Y")
{
DATE date[7];
int n, i, j;
int people[40][7];
PNODE p;
printf("請輸入要查詢的天數(1-7):");
do
{
scanf("%d", &n);
if (n > 7 || n < 1)
printf("輸入非法,請重新輸入:");
} while (n > 7 || n < 1);
for (i = 0; i < n; i++)
{
printf("請輸入第%d個日期(yyyy,mm,dd):", i);
scanf("%d,%d,%d", &date[i].m_year, &date[i].m_month, &date[i].m_day);
}
for (i = 0; i < 40; i++)
for (j = 0; j < 7; j++)
people[i][j] = 0;
for (p = psglist->next; p != NULL; p = p->next)
{
for (j = 0; j < n; j++)
{
if (datecmp(&date[j], &p->)
{
for (i = 0; i < 40; i++)
{
if (fltlist[i].m_fltno == p->
people[i][j]++;
}
}
}
}
for (i = 0; i < 40; i++)
{
if (fltlist[i].m_fltno != -1)
{
printf("%d %s--%s--%s ", fltlist[i].m_fltno, fltlist[i].m_szFrom,
fltlist[i].m_szPass, fltlist[i].m_szTo);
for (j = 0; j < n; j++)
printf("%d ", people[i][j]);
printf("\n");
}
}
printf("繼續查詢嗎(y/n)");
ClearBuffer();
c = getchar();
}
}
void Manage(FLIGHT fltlist[], PNODE psglist)
{
for (;;)
{
char c;
system("cls");
printf("航班管理\n");
printf("~~~~~~~~\n");
printf("1.查詢航班基本情況\n");
printf("2.對某天航班飛行情況管理\n");
printf("3.近期航班飛行情況管理\n");
printf("4.取消航班\n");
printf("5.新增航班\n");
printf("6.返回\n");
printf("\n請選擇1-6:");
c = getchar();
switch (c)
{
case "1":
Query(fltlist);
break;
case "2":
OneDay(fltlist, psglist);
break;
case "3":
MultiDay(fltlist, psglist);
break;
case "4":
Del(fltlist);
break;
case "5":
Add(fltlist);
break;
case "6":
break;
default:
continue;
}
if (c == "6")
break;
}
}
void SaveFlight(FLIGHT fltlist[])
{
FILE *fp;
if ((fp = fopen("", "wb")) == NULL)
{
printf("不能打開文件,航班數據無法保存。\n");
fclose(fp);
return;
}
fwrite(&fltlist[0], sizeof(FLIGHT), 40, fp);
fclose(fp);
printf("航班數據已保存至文件。\n");
}
void SavePassenger(PNODE psglist)
{
FILE *fp;
PNODE p;
int n = GetPsgCount(psglist);
unlink("");
if (n == 0)
return;
if ((fp = fopen("", "wb")) == NULL)
{
printf("不能打開文件,乘客數據無法保存。\n");
fclose(fp);
return;
}
fwrite(&n, sizeof(int), 1, fp);
for (p = psglist->next; p != NULL; p = p->next)
fwrite(&p->m_psg, sizeof(PASSENGER), 1, fp);
fclose(fp);
printf("乘客數據已保存至文件。\n");
}
void Quit(FLIGHT fltlist[], PNODE psglist)
{
SaveFlight(fltlist);
SavePassenger(psglist);
}
void main(void)
{
FLIGHT fltlist[40];
NODE psglist;
ReadFlight(fltlist);
ReadPassenger(&psglist);
for (;;)
{
char c;
system("cls");
printf("飛機訂票系統\n");
printf("~~~~~~~~~~~~\n");
printf("---主菜單---\n");
printf("1.訂票\n");
printf("2.退票\n");
printf("3.航班管理\n");
printf("4.查詢\n");
printf("5.退出\n");
printf("\n請選擇1-5:");
c = getchar();
switch (c)
{
case "1":
Book(fltlist, &psglist);
break;
case "2":
/*c_ticket(fltlist, &psglist);*/
break;
case "3":
Manage(fltlist, &psglist);
break;
case "4":
query(fltlist, &psglist);
break;
case "5":
Quit(fltlist, &psglist);
break;
default:
continue;
}
if (c == "5")
break;
}
ClearPsgList(&psglist);
}
實驗3 約瑟夫環(Joseph)任務:編號是1,2,……,n的n個人按照順時針方向圍坐一圈,每個人只有一個密碼(正整數)。一開始任選一個正整數作為報數上限值m,從第一個仍開始順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向的下一個人開始重新從1報數,如此下去,直到所有人全部出列為止。設計一個程序來求出出列順序。
要求:利用單向循環鏈表存儲結構模擬此過程,按照出列的順序輸出各個人的編號。
測試數據:m的初值為20,n=7 ,7個人的密碼依次為3,1,7,2,4,7,4,首先m=6,則正確的輸出是什么
輸入數據:建立輸入處理輸入數據,輸入m的初值,n ,輸入每個人的密碼,建立單循環鏈表。
輸出形式:建立一個輸出函數,將正確的輸出序列
實驗內容:
實驗源程序:
#include
using namespace std;
#define N 7
typedef struct node
{
int data;
int sercet;
struct node *next;
}ListNode;
typedef ListNode *LinkList;
.再依次5的倍數的牌翻一次,6的,7的 直到 以52為基數的 翻過,輸出:這時正面向上的牌有哪些
實驗內容:
實驗源程序:
#include
using namespace std;
void Pcout1(int i,int j)
{
switch(i)
{
case 0:cout
第四篇: 數據結構實驗報告總結
電子信息工程學院2014級《數據結構》實驗報告姓名:
譚粵薇學號222014333210101
實驗項目實驗內容
實驗三線性表及其應用(Ⅲ)
二、實驗內容
采用鏈式存儲結構實現:
一元稀疏多項式的計算。要求實現多項式存儲、輸出顯示、相加、相減、相乘。
(具體要求見題集第81頁1.5)
算法設計與程序實現:算法分析
(1輸入并建立多項式
(2)按指數降序排列輸出多項式
電子信息工程學院2014級《數據結構》實驗報告
(3)建立多項式a+b、a-b
a.將兩個鏈表中非空的部分進行指數比較
b.指數不等時,將指數小的數據復制到新的結點中,指數大的繼續與下一個結點比較
c.指數相等時,將兩結點的系數合并后如果不為0則開辟新結點
(4)計算a*b
外循環遍歷pa表,內循環遍歷pb表,使pa的任一項乘以pb的每一項再合并簡化
核心程序
電子信息工程學院2014級《數據結構》實驗報告
voidDestroyPolyn(Polynp{Polynq1,q2;q1=p->next;q2=q1->next;while(q1->next{
free(q1;q1=q2;q2=q2->next;}}
voidPrintPolyn(PolynP{Polynq=P->next;intflag=1;//項數計數if(!q{
putchar("0";printf("\n";return;}while(q{
if(q->coef>0&&flag!=1putchar("+";if(q->coef!=1&&q->coef!=-1{
printf("%g",q->coef;if(q->expn==1putchar("X";
elseif(q->expnprintf("X^%d",q->expn;}
else{
if(q->coef==1{
if(!q->expnputchar("1";elseif(q->expn==1putchar("X";elseprintf("X^%d",q->expn;}
if(q->coef==-1{
if(!q->expnprintf("-1";elseif(q->expn==1printf("-X";elseprintf("-X^%d",q->expn;}
第五篇: 數據結構實驗報告總結
編號:
江西理工大學
數據結構課程設計報告
班級:
學號:姓名:時間:
指導教師:
目錄
第一章需求分析..........................................1
1.1實驗內容概述......................................11.2實驗目的概述......................................1
第二章概要設計......................................2
2.1抽象數據類型定義..................................22.2程序流程圖........................................22.3鏈表分析..........................................4
第三章詳細設計......................................5
3.1定義關鍵步驟......................................53.2定義關鍵函數......................................63.3主函數............................................9
第四章調試分析.....................................10
4.1問題討論.........................................104.2經驗與體會.......................................124.3測試結果.........................................12
第五章總結分析.....................................13第六章參考文獻.....................................13附錄源程序................................................................................14
第一章需求分析
1.1實驗內容概述
?紙牌游戲
編號為1-52張牌,正面向上,從第2張開始,以2為基數,是2的倍數的牌翻一次,直到最后一張牌;然后,從第3張開始,以3為基數,是3的倍數的牌翻一次,直到最后一張牌;然后…從第4張開始,以4為基數,是4的倍數的牌翻一次,直到最后一張牌;...再依次5的倍數的牌翻一次,6的,7的直到以52為基數的翻過,輸出:這時正面向上的牌有哪些?要求:用數組、鏈表結構實現,采用遞歸方法。
?哈夫曼編碼
設計出下面字符表的哈夫曼編碼對應的二叉樹,并輸出每個字符的哈夫曼編碼。字符
m
n44
o12
p17
q9
r5
出現頻率(%)13
1.2實驗目的概述
?紙牌游戲
①了解線性表的特性,以及它們在實際問題中的應用。②掌握順序表和鏈表的實現方法,以及它們的基本操作。
③掌握線性表的鏈式存儲結構——單鏈表的定義及其C語言實現。④掌握線性表在鏈式存儲結構——單鏈表中的各種基本操作。⑤通過用鏈表編程實現問題的解決,提高自身的問題解決能力。
?哈夫曼編碼
以字符的頻度為權值,建立哈夫曼樹,求哈夫曼編碼。根據字符及權值得到其相應的編碼。
第1頁




