⑴ 數據結構實驗(C語言): 順序表實驗
Status Initlist_Sq(SqList &L) /*初始化順序表*/
{ L=(SqList *)malloc(sizeof(SqList));
l->length=0;
}
void Destroylist(SqList &L) /*銷毀順序表*/
{
free(L);
}
void Clearlist_Sq(SqList &L) /*清空順序表*/
{ 同上}
Status Listempty_Sq(SqList L) /*測試順序表是否為空*/
{
return(L->length==0);
}
Status ListInsert_Sq(SqList &L, int i,ElemType e) /*在第i個位置上插入一個元素*/
{ int j;
if(i<1||i>L->length+1)
return 0;
i--;
for(j=L->length;j>i;j--)
L->elem[j]=l->elem[j-1];
L->elem[i]=e;
L->length++;
return 1;
}
int LocateElem_Sq(SqList L,ElemType e) /*返回元素e在順序表中的位置*/
{ int i=0;
while(i<L->length&&L->elem[i]!e) i++;
if(i>=L-length)
return 0;
else
return i+1;
}
Status ListDelete_Sq(SqList &L, int i, int &e) /*刪除第i個位置上的元素*/
{ int j;
if(i<1||i>L->length)
return 0;
i--;
e=L->elem[i];
for(j=i;j<L->length-1;j++)
L->elem[j]=L->elem[j+1];
L->length--;
return 1;
}
好好看看
⑵ 數據結構實驗:線性表的順序表示和鏈式表示及插入、刪除、查找運算
這是我的第一次上機實驗課的內容來呢!
#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
struct list //結點類型
{ int data;
struct list *next;
};
struct list *head;//聲明結點指針
int static length;//聲明表長變數
struct list *creat_n()//創建有n個元素的鏈表
{
struct list *q,*p,*head=NULL;
printf("\n輸入你所要創建的結點數: ");
scanf("%d",&length);
head=p=(list*)malloc(sizeof(list)); //創建一個新結點並用頭指針指向它
printf("輸入該結點的值: ");
scanf("%d", &p->data);
p->next=NULL;
for(int i=length-1;i>=1;i--)
{
q=p;
p=(list*)malloc(sizeof(list)); //創建新結點
printf("輸入該結點的值: ");
scanf("%d", &p->data);
q->next=p;
}
printf("輸入完畢\n\n");
p->next=NULL;
return head;
}
struct list * output()//輸出表長與結點值函數
{
struct list *p;
p=head;
printf("\n當前鏈表中存有的元素:\n");
while(p!=NULL)
{
printf("%d\n",p->data);
p=p->next;
}
printf("當前的表長是: %d\n\n",length);//輸出當前表長
return head;
}
void insert()//插入結點函數
{
struct list *k,*p,*q;
int x;
printf("請輸入你要在哪個結點值之前插入新結點: ");
scanf("%d",&x);
k=(list*)malloc(sizeof(list));//創建新結點
printf("請輸入新結點的值: ");
scanf("%d",&k->data);
k->next=NULL;
if(head==NULL)//若鏈表為空,則直接入鏈表
{
head=k;
length=length+1;
printf("插入成功\n\n");
}
else if(head->data==x)//在第一個結點前插入新結點
{
k->next=head;
head=k;
printf("插入成功\n\n");
length=length+1;
}
else
{
q=head;
p=head->next;
while((p != NULL) && (p->data != x))//找出值為X的結點的位置
{
q = p;
p = p->next;
}
if (p == NULL)
{
q->next=k;//在鏈表末插入新結點
printf("插入成功\n");
length=length+1;
}
else if(p->data == x)//在要求的X結點前插入新結點
{
k->next=p;
q->next=k;
printf("插入成功\n\n");
length=length+1;
}
}
output();
}
int delet()//刪除結點函數
{
struct list *q,*p;
int x,y;
printf("請輸入你所要刪除的結點值: ");
scanf("%d",&x);
if(head==NULL)//表空
{
printf("表空\n");
return 0 ;
}
else if(x==head->data)//第一個結點為刪除的結點
{
q=head;
head=head->next;
y=q->data;
free(q);
printf("刪除成功\n\n");
length=length-1;
output();
return(y);
}
else
{
q=head;
p=head->next;
while((p != NULL) && (p->data != x))//找出值為X的結點
{
q=p;
p=p->next;
}
if(p==NULL)
{
printf("沒有刪除對象\n");
}
if(x==p->data)//刪除值為X的結點
{
q->next=p->next;
y=p->data;
free(p);
printf("刪除成功\n\n");
length=length-1;
output();
return (y);
}
else
{
printf("表中沒有指定的結點\n");
output();
return 0;
}
}
return 0;
}
void find()
{
struct list *p;
int k,x,i=1;
char y,n;
LOOP:
p=head;
printf("請輸入你要查找的結點值: ");
scanf("%d",&x);
while(p->data!=x)
{
p=p->next;
i++;
}
printf("你所查找的結點是表中第 %d 個結點!\n\n",i);
printf("是否要繼續查找,請輸入y/n\n\n");
k=getch();
if(k=='y')
{
i=1;
goto LOOP;
}
else
return;
}
void main()
{
printf("計Y062 200502001052 李抱和\n\n");
int a;
LOOP:
printf(" *****************\n");
printf(" ** 1 創建鏈表 **\n");
printf(" ** 2 鏈表輸出 **\n");
printf(" ** 3 插入結點 **\n");
printf(" ** 4 刪除結點 **\n");
printf(" ** 5 查找結點 **\n");
printf(" *****************\n");
printf("\n請選擇: ");
scanf("%d",&a);
switch(a)
{
case 1 :
head=creat_n();
break;
case 2 :
output();
break;
case 3 :
insert();
break;
case 4 :
delet();
break;
case 5 :
find();
break;
}
goto LOOP;
}
⑶ 數據結構試驗怎麼做
用TURBO C 2.0 或者 WIN-TC 或者visual c++都行。
看看這個也許你會明白的更多一些。
實驗一 多項式相加
一、實驗目的
熟悉鏈表的使用。
掌握如何使用C語言實現鏈表的說明、創建以及結點的插入和刪除等操作。
二、實驗要求
熟悉C語言編程。
三、實驗內容
對於兩個一元多項式中所有指數相同的項,對應系數相加,若其和不為零,則構成「和多項式」的一項;對於兩個一元多項式中所有指數不相同的項,則分別復抄到「和多項式」中去。
四、實驗步驟
1. 用鏈表作一元多項式的數據結構,用C語言對鏈表作說明
2. 生成輸入一元多項式的函數
3. 輸入一元多項式A(x)和B(x)
4. 以一元多項式A(x)為和多項式,將B(x)多項式中系數加入到A(x)中去
實驗二 後綴表達式計算
一、實驗目的
熟悉棧的使用。
掌握如何使用C語言實現棧的說明、創建以及進棧和出棧等操作。
二、實驗要求
熟悉C語言編程。
三、實驗內容
先將中綴表達式(就是我們通常所見的)轉換為後綴表達式,比如 a+b*c+d 要變成 abc*+d+;轉換的方法用棧來實現,涉及到運算符的優先順序;然後用另一個棧來對後綴表達式計算結果
四、實驗步驟
1.讀入字母/數字--〉字母/數字進棧
2.讀入運算符--〉退出兩個字母/數字,用運算符計算結果,並將結果進棧
3.棧能剛好退完,則最後的即為結果。否則表明表達式有誤
實驗三 Kmp演算法
一、實驗目的
熟悉字元串的使用。
掌握如何kmp演算法實驗字元串的模式匹配。
二、實驗要求
熟悉C語言編程。
三、實驗內容
求出子串(模式串)的next,利用kmp演算法實驗模式與主串的匹配演算法。
四、實驗步驟
1.生成模式串的next函數
2.從第1個字元開始,進行模式串與主串的比較,
3.如果出現失配,將模式串的第next[j]位置開始,繼續與主串進行比較。
實驗四 Huffman 編碼
一、實驗目的
熟悉Huffman編碼方法。
了解並弄懂Huffman編碼實現信息的無損壓縮原理。
二、實驗要求
熟悉C語言編程。
三、實驗內容
1.根據給定的n個權值(w1, w2, …, wn)構成n棵二叉樹的集合F=,其中每棵二叉樹Ti中只有一個帶樹為Ti的根結點
2.在F中選取兩棵根結點的權值最小的樹作為左右子樹構造一棵新的二叉樹,且置其根結點的權值為其左右子樹權值之和
3.在F中刪除這兩棵樹,同時將新得到的二叉樹加入F中
4.重復2, 3,直到F只含一棵樹為止
四、實驗步驟
1.用C語言實現二叉樹的說明
2.輸入n個權值,並生成n個二叉樹
3.對n個二叉樹逐步生成Huffman樹
4.對Huffman樹的每個葉子結點生成編碼
實驗五 關鍵路徑
一、實驗目的
熟悉關鍵路徑的實現方法。
了解AOE-網以及關鍵路徑在工程實踐中的應用。
二、實驗要求
熟悉C語言編程。
三、實驗內容
根據輸入的弧,生成AOE-網。從始點開始,找出到終點的多條路徑,求這些路徑上的關鍵活動。由關鍵活動組成的從始點到終點的路徑,即為關鍵路徑。
四、實驗步驟
1.輸入e條弧,生成AOE-網的存儲結構。
2.從始點v0出發,令ve[0]=0,按拓撲有序求ve[j]
3.從終點vn-1出發,令vl[n-1]=ve[n-1],按逆拓撲有序求vl[i]
4.根據各頂點的ve和vl值,求每條弧(活動)ai的最早開始時間e[ai]和最遲開始時間l[ai]
5.如果e[ai]=l[ai],則ai為關鍵活動
實驗六 最短路經
一、實驗目的
熟悉最短路徑的實現方法。
了解AOE-網以及最短路徑在求解實際問題中的應用。
二、實驗要求
熟悉C語言編程。
三、實驗內容
從始點v0開始,逐步求v0到其它可達的各頂點的最短路徑,直到所有頂點計算完成為止。
四、實驗步驟
1.輸入e條弧,生成AOE-網的存儲結構。
2.初始化: S ← ;
dist[j] ← Edge[0][j], j = 1, 2, …, n-1; // n為圖中頂點個數
3.求出最短路徑的長度:
dist[k] ← min , i V- S ;
S ← S U ;
4.修改從v0到V-S集合中各頂點的最短路徑:
dist[i] ← min,
對於每一個 i 屬於 V- S ;
5.判斷:若 S = V, 則演算法結束,否則轉 2。
實驗七 二叉排序樹
一、實驗目的
熟悉二叉排序樹的使用。
掌握如何使用C語言實現二叉樹的說明、創建以及二叉排序樹的生成等操作。
二、實驗要求
熟悉C語言編程。
三、實驗內容
給定一個記錄關鍵字的值,與二叉排序樹的根結點值比較,如果小於根結點的值,則向左子樹查找;如果大於根結點的值,則向右子樹查找。如果查找到葉子結點leaf,仍沒有找到記錄,則:如果關鍵字的值小於leaf的值,則插入該leaf結點的左邊,做leaf的左孩子,否則做leaf的右孩子。
四、實驗步驟
1.用C語言實現二叉樹的說明
2.直接將輸入的值作為根結點的值
3.與根結點比較,小於則放到左子樹上,大於則放到右子樹上。
實驗八 希爾排序
一、實驗目的
熟悉希爾排序的使用。
掌握如何使用C語言實現若干記錄的排序。
二、實驗要求
熟悉C語言編程。
三、實驗內容
先將整個待排記錄序列分割成為若乾子序列分別進行直接插入排序,待整個序列中的記錄「基本有序」時,再對全體記錄進行一次直接插入排序。
四、實驗步驟
1.輸入待排序記錄
2.首先取一個整數 gap < n(待排序記錄數) 作為間隔, 將全部記錄分為 gap 個子序列, 所有距離為 gap 的記錄放在同一個子序列中
3.在每一個子序列中分別施行直接插入排序。
4.然後縮小間隔 gap, 例如取 gap = gap/2
5.重復上述的子序列劃分和排序工作,直到最後取gap = 1, 將所有記錄放在同一個序列中排序為止。
實驗九 快速排序
一、實驗目的
熟悉快速排序的使用。
掌握如何使用C語言實現若干記錄的排序。
二、實驗要求
熟悉C語言編程。
三、實驗內容
通過一趟將待排記錄分割成獨立的兩個部分,其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小。再對兩個部分分別進行快速排序。
四、實驗步驟
1.輸入待排序的記錄,並選擇第一個記錄作為pivotkey記錄
2.從high指向的記錄開始,向前找到第一個關鍵字的值小於Pivotkey的記錄,將其放到low指向的位置,low+1
3.從low指向的記錄開始,向後找到第一個關鍵字的值大於Pivotkey的記錄,將其放到high指向的位置,high-1
4.重復2,3,直到low=high,將樞軸記錄放在low(high)指向的位置
5.重復2,3,4,直到整個記錄有序為止
實驗十 堆排序
一、實驗目的
熟悉堆排序的使用。
掌握如何使用C語言實現若干記錄的排序。
二、實驗要求
熟悉C語言編程。
三、實驗內容
首先將一個無序序列建成一個堆;然後輸出堆頂元素;在輸出堆頂元素之後,調整剩餘的元素成為一個新堆。
四、實驗步驟
1.輸入記錄,按順序創建一個完全二叉樹
2.根據篩選演算法,從最後一個結點開始,一直到根結點,逐步篩選,建造初始堆。
3.輸出堆頂記錄,將最後一個結點放到堆頂,並做篩選,重新建造一個堆
4.直到所有記錄輸出為止
⑷ 求數據結構試驗 線性表的順序存儲結構
#include<iostream.h>
#include<stdlib.h>
#include <malloc.h>
#define OVERFLOW 0
#define OK 1
#define ERROR 0
#define LIST_INIT_SIZE 100//線性表存儲空間的初始增量
#define LISTINCREMENT 10 // ?
typedef struct{
int * elem;// 存儲空間基址
int length;//當前長度
int listsize;//當前分配的存儲容量
}SqList;
SqList L;
int InitList_Sq(SqList & L){
//構造一個新的線性表。
L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L.elem)exit(OVERFLOW);//存儲容量失敗
L.length=0; //空表長度為0
L.listsize=LIST_INIT_SIZE;//存儲初始容量
return OK;
}//InitList_Sq
int LIstInsert_Sq(SqList & L,int i,int e){
//在順序線性表L中第i位置之前插入新的元素e
if(i<1||i>L.length+1) return ERROR;
if(L.length>=L.listsize){
int * newbase=(int *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(int));
if(!newbase)exit(OVERFLOW);
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
int * q=&(L.elem[i-1]);
for(int * p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;
*q=e;
++L.length;
return OK;
}
int ListDelete_Sq(SqList&L,int i,int &e)
{
if((i<1)||(i>L.length))return ERROR;
int *p=&(L.elem[i-1]);
e=*p;
int *q=L.elem+L.length-1;
for(++p;p<=q;++p)*(p-1)=*p;
--L.length;
return OK;
}
void main()
{
SqList L;
int i,n;
int e;
cout<<"輸入順序表的個數:"<<endl;
cin>>n;
int *p=(int *)malloc(n*sizeof(int));
InitList_Sq(L);
cout<<"輸入線性表"<<n<<"個元素的值"<<endl;
for(i=0;i<n;i++)
{
cin>>p[i];
L.elem[i]=p[i];
}
cout<<endl;
L.length=i;
cout<<endl;
cout<<"輸入要插入元素的值"<<endl;
cin>>e;
cout<<endl;
cout<<"輸入要插入的位置"<<endl;
cin>>i;
LIstInsert_Sq( L, i, e);
for(i=0;i<n+1;i++)
cout<<L.elem[i];
cout<<endl;
cout<<"輸入要刪除的位置"<<endl;
cin>>i;
ListDelete_Sq(L,i,e)
;for(i=0;i<n;i++)
cout<<L.elem[i];
free(p);
⑸ 數據結構實驗的實驗報告怎麼寫
資料庫課程設計
「資料庫課程設計」是資料庫系統及應用課程的後續實驗課,是進一步鞏固學生的資料庫知識,加強學生的實際動手能力和提高學生綜合素質。
一、 課程設計目的
課程設計為學生提供了一個既動手又動腦,獨立實踐的機會,將課本上的理論知識和實際有機的結合起來,鍛煉學生的分析解決實際問題的能力。提高學生適應實際,實踐編程的能力。課程設計的目的:
1. 加深對資料庫原理、程序設計語言的理論知識的理解和應用水平;
2. 在理論和實驗教學基礎上進一步鞏固已學基本理論及應用知識並加以綜合提高;
3. 學會將知識應用於實際的方法,提高分析和解決問題的能力,增強動手能力;
4. 為畢業設計和以後工作打下必要基礎。
二、課程設計要求
運用資料庫原理的基本理論與應用知識,在微機RDBMS(SQL Server)的環境上建立一個資料庫應用系統。要求把現實世界的事物及事物之間的復雜關系抽象為信息世界的實體及實體之間聯系的信息模型,再轉換為機器世界的數據模型和數據文件,並對數據文件實施檢索、更新和控制等操作。
1. 用E-R圖設計選定題目的信息模型;
2. 設計相應的關系模型,確定資料庫結構;
3. 分析關系模式各屬於第幾範式,闡明理由;
4. 設計應用系統的系統結構圖,確定系統功能;
5. 通過設計關系的主碼約束、外碼約束和使用CHECK實現完整性控制;
6. 為參照關系設計插入、刪除、修改觸發器;
7. 實現應用程序設計、編程、優化功能;
8. 對系統的各個應用程序進行集成和調試,進一步優化系統功能、改善系統用戶界面完成實驗內容所指定的各項要求;
9. 分析遇到的問題,總結並寫出課程設計報告;
10. 自我評價
三、實驗環境
開發環境VC++、C#、ASP或JAVA;ODBC/JDBC;資料庫SQL Server
四、上機實現內容
1. 創建資料庫的結構
2. 創建各基本表的結構
3. 編制系統各功能模塊,完成數據的管理(增、刪、改)及統計查詢。對於程序運行界面不做考核的重點。
五、課程設計考核
1.對學生到實驗室的情況進行不定時統計;
2.出勤率+課程設計報告+課程設計所開發的應用系統+其他(上機抽查和提問)=綜合評定成績。
3.課程設計結束時請將下列資料上交:
(1) 課程設計報告;
(2) 所開發的應用系統的源程序、安裝和使用說明;
(3) 將(1)(2)中的資料壓縮成一個壓縮包,壓縮包文件的命名規則:班級+學號(末2位)+姓名(例如:計科090101王鵬曉);
(4) 班長將本班每人的(3)中的壓縮包刻錄成光碟連同列印的課程設計報告收齊,交給任課教師。
附錄﹑課程設計題目
題目1:課程設計選題管理系統(1,24)
包括三大模塊:
課程設計題目維護與查詢:題目的添加、修改和刪除;按題目類型、名稱和關鍵字查詢以及已選與未選題目的查詢;
學生信息維護與查詢;
學生選題維護與管理:學生選題及查詢;
具體功能細化:
前台學生選題:學生上網登錄系統進行選題;
前台教師出題:
教師添加、修改和刪除題目;
教師確認學生的選題;
後台管理出題和選題
添加用戶及許可權
題目2:書店管理系統(23)
包括四大模塊:
售書(圖書銷售管理及銷售統計,查詢)
進書(通過書目,向發行商下定單訂購圖書)
庫存(圖書庫存,統計)
相關查詢
題目3:圖書館管理系統(11)
包括四大模塊:
圖書的查詢
借書
還書
圖書的預約
題目4:庫存管理系統(8)
包括四大模塊:
商品目錄建立
商品入庫管理
商品出庫管理
商品庫存查詢
題目5:工資管理系統(1 人)41
包括四大模塊:
系統數據初始化
員工基本信息數據的輸入、修改、刪除;
員工個人信息及工資表的查詢;
員工工資的計算;
參考數據如下:
員工基本狀況:包括員工號、員工姓名、性別、所在部門、工資級別、工資等級等。
工資級別和工資金額:包括工資等級、工資額。
企業部門及工作崗位信息:包括部門名稱、工作崗位名稱、工作崗位工資等。
工齡和工資金額:包括工齡及對應工資額。
公司福利表:包括福利名稱、福利值。
工資信息:包括員工號、員工姓名、員工基礎工資、員工崗位工資、員工工齡工資、公司福利、員工實得工資。
題目6:酒店客房管理系統 (1 人)14,26
包括四大模塊:
前台操作:包括開房登記、退房結賬和房狀態查看
預訂管理:包括預訂房間、預訂入住和解除預訂
信息查詢:包括在住客人列表、預訂客人列表和歷史客人列表
報表統計:包括開房記錄統計、退房結賬和預訂房間統計
員工基本信息數據的輸入、修改、刪除;
參考數據如下:
住店管理:客人姓名、證件號碼、房號、入住時期、預計離開日期、結賬離開日期、應付金額
客人信息:姓名、性別、證件類型、證件號碼、聯系電話
房間信息:房號、房類型、價格、押金、房狀態 預訂房間
客人姓名、性別、房類型、房號、價格、證件類型、證件號碼、聯系電話、入住日期、預計離開日期、歷史信息
題目7:旅行社管理信息系統(1 人)3
包括如下模塊:
旅遊團隊、團隊團員及旅遊路線相關信息的輸入
旅遊團隊、團隊團員及旅遊路線相關信息的維護(修改、瀏覽、刪除和撤銷)
旅遊團隊管理信息的查詢(如按團隊編號)
團隊團員基本情況的查詢(可選多種方式)
旅遊路線相關信息的查詢(如按線路編號)
旅遊路線排行榜發布。
數據備份,更改密碼。
參考數據如下:
團員信息表(路線編號,團隊編號,團員編號,姓名,性別,電話,通信地址,身份證號碼, 團費交否,備注)
線路信息表(路線名稱,團費,簡介,圖形,路線編號)
團隊信息表(團隊編號,路線編號,團員人數,出發日期,返程日期)
旅遊團隊信息表(團隊編號,團隊負責人,團員人數,建團時間,是否出發,團費,盈虧)
密碼信息(操作員,密碼)
題目8:報刊訂閱管理系統 (1 人)25,35
包括如下模塊:
登錄功能:登錄統為身份驗證登錄。分為管理員登錄和一般用戶登錄。分別通過不 同的用戶名和密碼進入報刊訂閱管理界面,新的用戶需要注冊。
錄入新信息功能:對於管理員,包括新用戶信息和新報刊信息的錄入功能,信息一旦 提交就存入到後台資料庫中;普通用戶自行注冊進行可以修改個人信息。
訂閱功能:用戶可以訂閱報刊,系統自動計算所需金額,並顯示在界面上;管理員不 可訂閱報刊,必須以用戶身份訂閱報刊。
查詢功能:用戶可以查詢並顯示自己所訂閱的信息;管理員可以按人員、報刊、部門 分類查詢。查詢出的信息顯示在界面上,並且可以預覽和列印出結果。
統計功能:管理員可以按用戶、部門、報刊統計報刊的銷售情況,並對一些重要的訂 閱信息進行統計;普通用戶可以統計出自己的訂閱情況,並且可以預覽和列印出結果。
系統維護功能:數據的安全管理,主要是依靠管理員對資料庫里的信息進行備份和恢 復,資料庫備份後,如果出了什麼意外可以恢復資料庫到當時備份的狀態,這提高了系統和 數據的安全性,有利於系統的維護
參考數據如下:
管理員表(Adminuser) :管理員名、密碼。
部門表(Department) :部門號,部門名。
用戶表(Users) :用戶賬號、密碼、真實姓名、身 份證號、聯系電話,聯系地址,部門號(和部門表有關)等。
報刊類別表(NewspaperClass) :分類編號、 分類名稱。
報刊信息表(Newspaper) :報刊代號、報刊名稱、出版 報社、出版周期、季度報價、內容介紹、分類編號(和報刊類別表有關)等。
訂單表(Order) :訂單編號、用戶編號、報刊代號、訂閱份數、訂閱月數等。
題目9:計算機等級考試教務管理系統(2 人)32
包括四大模塊:
用戶設置:對考點代碼,考點名稱進行設置,設置用戶與密碼;系統復位:即清除上一次考試數據(在之前存入歷史)
報名管理: 報各庫錄入(姓名不能不空,之間不能有空格) 增加、刪除、修改、瀏覽
准考證管理:准考證生成規則:xxx+yy+zz+kk,其中 XXX 為考點代碼;YY 為語言代碼,XX 為考場號,KK 為座位號 同一級別、語言應根據報名初始庫信息按隨機數生成准考證,同一考點最多可有 99*30=2970 名考生;如已生成准考證號,再重新生成准考證號,應該給予提示。 准考證列印
考務管理:考生信息查詢、瀏覽、列印
成績管理:成績數據錄入、接收 成績合成(總成績=筆試成績*0.6+上機成績*0.4),按大於或等於 60 合格
參考數據如下:
初始報名表(准考證號(為空) ,報名號(主鍵) ,級別+語言種類(外鍵) ,姓名,性別, 出生年份,民族,身份證號,聯系地址,聯系電話,照片,備注,參加培訓)
含准考證號的報名表(准考證號(為主鍵) ,報名號,級別+語言種類(外鍵) ,姓名,性別, 出生年份,民族,身份證號,聯系地址,聯系電話,照片,備注,參加培訓)
成績表(准考證號,筆試成績,上機成績,總成績) 級別語言代碼表(級別語言代碼,級別+語言)
用戶信息表(考點代碼,考點名稱,用戶名,密碼)
題目10:人事管理系統(1 人)21
包括四大模塊:
登錄管理:包括操作員管理,口令設置,許可權管理
人員管理:包括人事數據維護、人事信息查詢和人事信息統計
工資管理
部門管理:包括部門表,職稱表和年份表
查詢及報表列印
參考數據如下:
人事表(編號,姓名,性別,出生日期,工作日期,部門代碼,職稱,婚否,簡歷,相片)
工資表(基本工資,崗位津貼,獎勵,應發工資,水電,保險,實發工資)
部門表(代碼,部門名稱)
職稱表(職稱代碼,職稱名稱)
年份表(年份代碼,年份名稱)
操作員表(操作員代碼,操作員姓名,口令,部門,電話)
系統日誌表(操作員代號,操作員姓名,登錄時間,離開時間)
題目11:商品銷售管理系統(1 人)19
包括四大模塊:
用戶登錄
基本信息管理:包括銷售情況、商品信息、庫存表、員工表等信息的錄入、瀏覽、修改、撤銷、刪除和查詢等
商品銷售管理:包括商品售出、退回和入庫
盤點:包括庫存檔點、當日銷售盤點
參考數據如下:
商品信息表(商品編號,商品名稱,品牌,型號,銷售單價) 商品編號=類別代碼(1 位)+品名代碼(1 位)+品牌代碼(2 位)+型號代碼(2 位)
銷售情況表(成交編號,商品編號,銷售數量,總金額,銷售日期,員工編號)
庫存表(商品編號,供貨商編號,進貨日期,進貨價,庫存數量)
員工表(員工編號,員工姓名,性別,基本工資,職務,密碼)
供貨商表(供貨商編號,供貨商名稱,所在地,聯系電話)
員工資料表(員工編號,員工姓名,是否黨員,簡歷,照片)
題目12:學生成績管理系統(1 人)29
包括四大模塊:
基本數據管理:包括院系管理,專業管理(設置院系下面的專業),班級管理(設置專業下面的班級),課程管理(設置相應專業下面的課程)
學生信息管理:包括基本信息錄入、基本信息修改
學生成績管理:包括學生成績錄入、學生成績修改
信息查詢:包括基本信息查詢、成績信息查詢、學校人數統計
系統管理:用戶管理、數據備份和系統幫助
參考數據如下:
院系信息(院系代碼,院系名稱)
院系專業信息(班級、院系代碼,專業)
學生基本信息(班號,學號,姓名,性別,出生年月,籍貫,政治面貌,身份證號,入學年月,家庭地址,郵政編碼,圖片信息,備注)
學生成績表(學號,課號,成績,備注)
課程表(課號,課程名稱,學期,備注)
班表(班號,班級名稱)
用戶信息表(用戶名,密碼,用戶標識)
題目13:火車售票管理系統(4 人)36
包括四大模塊:
售票管理
訂票管理
信息查詢
系統維護
參考數據如下:
車次信息表(車次,始發站,終點站,發車時間,到達時間)
訂票信息表(車次,座位號,發車時期,發車時間,座位等級,票價)
車次座位等級分配及座位佔用表(車次,座位號,座位等級,票價,佔用標志)
用戶信息表(用戶名,密碼,用戶標識)
題目14:小型物業管理系統(1 人)
包括四大模塊:
房源管理:對原始資料的錄入、修改、查詢和刷新。一般用戶可以查詢與房間有關 的統計資料;物業主管可其進行增、刪、改、插等操作
租房管理:對房產出租,退租以及租房面積調整。其中物業主管可對其進行房租金 額計算和收款操作,一般用戶對其查詢
水電處理:根據租房資料,結合當月水、電量進行分攤,完成應收水電費。其中物 業主管對其進行計算,其他查詢
交款處理:提供收款和發票列印以及交款數據查詢
查詢處理:對租房資料、交款資料,發票資料進行查詢
參考數據如下:
房源資料(名稱,面積,月租,物業,倉庫)
租房資料(名稱,面積,單位,月租,物業,押金,倉庫)
水電資料(單位,電量,水量,電費,水費)
交費資料(收費項目,應收日期,應收金額,已收金額,未收金額,本次收款)
發票資料(單位,房租,電費,水費,物業)
許可權資料(用戶,密碼,房源管理,租房管理,水電管理,交費管理,發票管理,系統維護) 其中系統管理員,有權進行系統維護;單位內部物業主管,有權進行物業資源調配、單元出 租,退租和收款開票操作;物業管理員,有權進行水電處理和收款處理等操行;租戶代表, 有權進行種類費的查詢操作
題目15:機房收費管理系統(1 人)7,34
包括四大模塊:
登錄模塊
上機管理模塊 說明:上機登記時,余額不足 3 元或卡處於掛失狀態,則拒絕登記 每位同學的一次上機形成一條記錄,每 36S 遍歷一次上機記錄表,對表中所有正上機欄位為 TRUE 的記錄的上機用時增加 36S,同時從上機卡表的余額減少
上機卡管理模塊
充值掛失模塊
查找統計模塊:統計某天上機的總時數、每次上機的平均時數和機房的收入;某學 生上機的次數、上機總時數、每次上機平均時間;掛失和查詢余
參考數據如下:
上機卡(卡號,姓名,專業班級,余額,狀態) 狀態的取值有:正常(能自費上機)
掛失上機記錄(卡號,上機日期,開始時間,上機用時,正上機,管理號代碼),上機用時記錄學生上機時間(S);正上機是一個布爾型,為 True 表示正上機,每 36 秒刷新 其上機用時並扣除上機費用,為 False 表示上機結束。上機記錄表永久保存,用於事後查詢 和統計 管理員(代碼,姓名,口令)
題目16:高校葯房管理(1 人)31
包括四大模塊:
基礎數據處理:包括醫生和葯劑師名單的錄入,修改,刪除及查詢
營業數據處理:包括葯品進貨上櫃,處理劃價,配葯,櫃存葯品查詢,處方綜合查 詢,交接班結轉清。
參考數據如下:
葯品信息表(貨號,貨名,計量單位,進貨數量,進貨單價,出售單價,進貨日期,收貨人 和供應商)
處方信息(編號,患者姓名,醫生姓名,葯劑師姓名,處方日期,配葯日期) 處方葯品信息(處方編號,葯品貨號,計量單位,配葯數量,銷售單價,已配葯否)
醫生名單和葯劑師名單表(姓名)
題目17:考勤管理系統(2 人)40
包括四大模塊:
記錄每個員工每天所有進入公司的時刻和離開公司的時刻。
每天結束時自動統計當天的工作時間
每天結束時自動統計當天遲到或早退的次數。
對於彈性工作制,每天結束時自動統計當月的工時,並自動算出當月欠缺或富餘的 時間
每個月末統計該月的工作時間判斷是束足夠
每個月末統計該月的工作天數並判斷是否足夠
管理人員查詢並修改工作時間(特殊情況下修改)
管理人員賬戶管理(如設置密碼等)
管理人員設定早退及遲到的條件,每個月的工作時間
管理人員設定每個月的工作日期及放假日期
參考數據如下:
員工信息(工號,姓名,年齡,入職時間,職位,性別,密碼)
配置信息(上班時間小時,上班時間分鍾,下班時間小時,下班時間分鍾,每天工作時間)
每月統計數據表(工號,姓名,剩餘的時間,遲到的次數,早退的次數,工作天數)
每天統計信息表(工號,姓名,小時,分鍾,動作,時間) 其中動作指的時入或離開公司
題目18:單位房產管理系統(2 人)33,10
包括四大模塊:
系統模塊:完成資料庫維護、系統關閉功能
物業費用模塊:完成本月物業的計費、歷史資料查詢和財務部門介面傳送數據、物 業相關費用單價設置
房屋資源模塊:對房屋資源進行添加、列表顯示、查詢
職工信息模塊:對職工進行添加、列表顯示、查詢以及相應部門、職務進行維護
幫助模塊:對用戶使用本系統提供在線幫助
參考數據如下:
職工(編號,姓名,性別,參加工作時間,行政職務,專業技術職務,評上最高行政職務時 間,評上最高專業技術職務時間,雙職工姓名,現居住房號,檔案號,房產證號,所在部門 編號,是否為戶主)
部門(編號,部門名稱) 住房級別表(編號,級別,住房標准,控制標准,級別分類)
房產情況(編號,房號,使用面積,現居住人 id,上一個居住人 id,最早居住人 ID,陽檯面積)
物業費用(編號,房號,水基數,水現在值,電基數,電現在值,燃氣基數,燃氣現在值, 當前年份,當前月份)
價格標准(編號,水單價,電單價,燃氣單價)
題目19:標准化考試系統 (2 人)15,39
功能要求: 設計一個簡單的標准化考試系統,僅有單項選擇題、多項選擇題和判斷題功能即可。
包括四大模塊:
題庫管理:實現試題的錄入、修改、刪除功能;
考試子系統:能夠實現考生做題、結果自動存入到資料庫中,有時間提示;
選擇身份(登錄)功能:系統能夠記錄考生輸入的登錄信息及交卷信息;
自動評分功能:考生交卷後能自動評分;
查看成績功能:能夠查詢考生相關信息(包含成績等)。
參考數據如下:
其它可供選擇的題目:
網上教務評教系統130,127,133 16
學生日常行為評分管理系統232,110,230
網上鮮花店 38
基於BS結構的工藝品銷售系統12
基於BS結構的校園二手物品交易網站 37
大學生就業管理系統201,208,234
題庫及試卷管理系統
資料庫原理及應用
課程設計報告
題目: 課程設計選題管理系統
所在學院:
班 級:
學 號:
姓 名: 李四
指導教師:
2011年12月 日
目錄
一、 概述
二、需求分析
三、概念設計
四、邏輯設計
五、系統實現
六、小結
一、概述
⑹ 數據結構實驗題
#include"iostream.h"
#include"math.h"
#include"stdlib.h"
class Calculator
{
public:
//介面方法聲明
void Run();
private:
//輔助函數
bool IsOperator(char ch);//判斷字元ch是否為操作符
char Precede(char theta1,char theta2);//判斷相繼出現的theta1和theta2的優先順序
double Operate(double left,char theta,double right,int[] &a);//執行運算letf theta right
void Get2Operands(LinkStack<double>&opnd,double &left,double &right);
//從棧opnd中退出兩個操作數
};
void Calculator::Get2Operands(LinkStack <double>&opnd,double &left,double &right)
{
}
bool Calculator:: IsOperator(char ch)
{
char ch;
cin>>ch;
if(ch=='+'||ch=='-'||ch=='*'||ch=='/'ch=='('ch==')'||ch=='=')
return true;
else
return false;
}
char Calculator:: Operate(double left,char theta,double right)
{ double result;
switch(theta)
{
case'+':result=left+right;break;
case'-':result=left-right;break;
case'*':result=left*right;break;
case'/':result=left/right;break;
}
return result;
}
char Calculator:: Precede(char theta1,char theta2)
{
char ch;
switch(theta1)
{
case'+':
case'-':
{
switch (theta2)
{
case'+':
case'-':
case')':
case'=':
ch='>';
break;
case'*':
case'/':
case'(':
ch='<';
break;
}
break;
}
case'*':
case'/':
{
if(theta2=='(')
ch='<';
else
ch='>';
break;
}
case'(':
{
if(theta2==')')
ch='=';
else ch='<';
break;
}
case')':
{
ch='>';
break;
}
case'=':
{
if(theta2=='=')
ch='=';
else
ch='<';
break;
}
}
return ch;
}
//方法Run()演算法實現如下
void Calculator::Run()
{//操作結果:按算符優先法進行表達式求值計算
LinkStack<double> opnd; //操作數棧
LinkStack<char>optr; //操作符棧
optr.push('='); //在optr棧中加入一個'='
char ch; //臨時字元
char optrTop; //臨時optr棧棧頂字元
double operand; //操作數
char theta; //操作符
cin>>ch; //從輸入流獲取一字元ch
while((optr.Top(optrTop),optrTop!='=')||ch!='=')
{
if(!IsOperator(ch))
{//ch不是操作字元
cin.putback(ch); //將字元放ch回輸入流
cin>>operand; //讀操作數operand
opnd.Push(operand); //進入opnd棧
cin>>ch; //讀入下一字元ch
}
else
{//ch是操作符
switch(Precede(optrTop,ch))
{
case'<':
optr.Push(ch);
cin>>ch;
break;
case'=':
optr.Pop(optr Top);
cin>>ch;
break;
case'>':
double left,right;
Get2Operands(opnd,left,right);
optr.Pop(theta);
opnd.Push(Operate(left,theta,right));
break;
case'e':
cout<<"操作符匹配出錯"<<endl;
exit(2);
}
}
}
opnd.Top(operand);
cout<<"表達式值為:"<<operand<<endl;
}
void main(void)
{
system("pause");
return 0;
}
希望能解決您的問題。
⑺ 數據結構完整版實驗報告
(一)實驗目的和要求
實驗目的:熟練掌握線性表的基本操作在順序存儲結構上的實現。
實驗要求:任選一種高級程序語言編寫源程序,並調試通過,測試正確。
(二)實驗主要內容
1. 建立n個元素的順序表SqList,實現順序表的基本操作;
2. 在SqList的元素i之後插入一個元素,實現順序表插入的基本操作;
3. 在sqList中刪除指定位置i上的元素,實現順序表刪除的操作。
4.
(三)主要儀器設備
PC機,Windows XP操作平台,Visual C++
(四)實驗原理
順序表操作:定義一個順序表類,該類包括順序表的存儲空間、存儲容量和長度,以及構造、插入、刪除、遍歷等操作的方法
(五)實驗步驟與調試分析:
順序表操作:先構造有四個數據的順序表,在第4個位置插入9,再讀取並刪除第3個元素。
(六)實驗結果與分析:
順序表操作:
(七)附錄(源程序):
#include<iostream>
using namespace std;
const int LIST_INIT_SIZE=10; //順序表初始長度
const int LISTINCREMENT=5; //順序表長度增值
class SqList
{
int *L; //定義存儲空間起始地址
int length; //順序表當前長度
int listsize; //順序表當前存儲容量
bool flag; //設立標志值記錄操作成敗
public:
SqList(int v1,int v2,int v3,int v4); //構造函數構造並初始化順序表
void ListInsert(int i,int e); //實現將e插入到順序表中第i個位置
void ListDelete(int i,int &e); //實現刪除順序表第i個元素
void ListVisit(); //實現順序表的遍歷
};
SqList::SqList(int v1,int v2,int v3,int v4) //構造並初始化順序表
{
L=new int[LIST_INIT_SIZE];
if(!L) //分配失敗
{
flag=false;
cout<<"ERROR"<<endl;
}
else //分配成功,進行初始化
{
*L=v1;
*(L+1)=v2;
*(L+2)=v3;
*(L+3)=v4;
length=4;
listsize=LIST_INIT_SIZE;
flag=true;
}
}
void SqList::ListInsert(int i,int e) //插入元素
{
int *p,*q;
int t;
if(i<1||i>length+1) cout<<"ERROR"<<endl; //插入位置錯誤
else
{
if(length==listsize) //空間不足,增加分配
{
p=new int[listsize+LISTINCREMENT];
if(!p) cout<<"ERROR"<<endl; //分配失敗
else //分配成功,復制順序表
{
for(t=0;t<length;t++)
*(p+t)=*(L+t);
q=L;L=p;p=q;
delete q;
listsize+=LISTINCREMENT;
}
}
for(t=length;t>=i;t--)
*(L+length)=*(L+length-1);
*(L+i-1)=e;
length++; //插入成功,表長加1
}
}
void SqList::ListDelete(int i,int &e)
{
if(i<1||i>length) cout<<"ERROR"<<endl; //刪除位置錯誤
else
{
e=*(L+i-1);
while(i<length)
{
*(L+i-1)=*(L+i);
i++;
}
length--; //刪除成功表長減1
}
}
void SqList::ListVisit() //遍歷
{
int i;
for(i=0;i<length;i++)
cout<<" "<<*(L+i);
cout<<endl;
}
int main()
{
int e=0;
SqList list(2,3,4,5);
list.ListVisit();
list.ListInsert(4,9);
list.ListVisit();
list.ListDelete(3,e);
list.ListVisit();
cout<<"e="<<e<<endl;
return 0;
}
⑻ 數據結構實驗:運用順序表或鏈表,實現對學生成績的輸入、輸出、查詢、插入、刪除、修改、排序等功能
這個問題你可以用易微庫表這個工具試下,工具可以在網路軟體http://rj..com/中搜索易微庫表,使用手冊可以在網路文庫http://wenku..com/中搜索易微庫表,以下是簡介
普通人也可以自己設計程序,根據平時處理業務數據時總結的表格、方法、公式等信息,創建一個自己的程序。數據結構自定義、自動計算記錄數、自動計算列合計、錄入首字母自動顯示相應的屬性類值、Excel數據處理、數據去重、數據整理、數據統計、數據一維表變成二維表的列轉行,數據公式計算、數據首字母檢索、數據快速檢索、Excel數據導入、Excel數據導出、數據顯示排序、查詢結果計算百分比、查詢結果計算順序名次、數據查詢條件自定義、數據高級篩選、小數據量數據挖掘、自定義顯示欄位名稱等等這些功能都可以通過簡單配置後即可實現。如此神奇的事情,趕快創建一個屬於自己的庫表程序吧。
⑼ 數據結構實驗
我寫的順序線性表的完整的C++代碼。
核心操作函數基本依照《數據結構(C語言版)》教材。僅供參考。
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<iostream.h>
#defineTRUE1
#defineFALSE0
#defineOK1
#defineERROR0
#defineINFEASIBLE-1
#defineOVERFLOW-2
typedefintStatus;
typedefintElemType;
#defineLIST_INIT_SIZE80
//線性表存儲空間的初始分配量
#defineLISTINCREMENT10
//線性表存儲空間的分配增量
typedefstruct{
ElemType *elem; //內存基址,ElemType為數據元素類型
int length; //當前表長
int listsize; //當前分配的存儲空間大小,以sizeof(ElemType)為單位
}SqList; //sequentiallist
//構造一個空的順序表
StatusInitList_Sq(SqList&L){
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
//L.elem=newElemType(LIST_INIT_SIZE);
if(!L.elem)exit(OVERFLOW);
L.length=0;
L.listsize=LIST_INIT_SIZE;
returnOK;//OK是1
}//InitList_Sq
//在順序表中查詢數據元素e是否存在,返回它的位序
intLocateElem_Sq(SqListL,ElemTypee){
inti=1; //從首元素開始比較
ElemType*p=L.elem; //p指向首元素
while((i<=L.length)&&(e!=*p))
{++i;++p;} //繼續查找
if(i<=L.length)returni; //查找成功,返回位序
elsereturn0; //不成功
}
//在順序表L的第i個元素之前插入新元素e,
//i的取值范圍為1≤i≤L.length+1
StatusListInsert_Sq(SqList&L,inti,ElemTypee){
if(i<1||i>L.length+1)returnERROR; //不合法
if(L.length==L.listsize){ //存儲空間已滿,增加分配
ElemType*newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase)exit(OVERFLOW); //存儲分配失敗
L.elem=newbase; //新基址
L.listsize+=LISTINCREMENT; //增加存儲容量
}
//合法性檢查
ElemType*q=L.elem+i-1; //q指示插入位置
ElemType*p;
for(p=L.elem+L.length-1;p>=q;--p)
*(p+1)=*p; //插入位置及之後的元素右移
*q=e; //插入e。L.elem[i-1]=e
++L.length; //表長增1
returnOK;
}
//刪除順序表L的第i個元素,並用e返回,
//1≤i≤L.length
StatusListDelete_Sq(SqList&L,inti,ElemType&e){
if((i<1)||(i>L.length))returnERROR; //刪除位置不合法
ElemType*p=L.elem+i-1; //p為被刪除元素的位置
e=*p; //被刪除元素L.elem[i-1]賦給e
ElemType*q=L.elem+L.length-1; //表尾元素的位置
for(++p;p<=q;++p)
*(p-1)=*p; //被刪除元素之後的元素左移
--L.length; //表長減1
returnOK;
}//將順序表L銷毀
voidDestroyList_Sq(SqList&L){
free(L.elem);
}
//將順序表L重置為空表
voidClearList_Sq(SqList&L){
L.length=0;
}
//若順序表L為空表,則返回TRUE,否則返回FALSE
StatusListEmpty_Sq(SqListL){
if(L.length)returnFALSE;
elsereturnTRUE;
}
//返回順序表L中數據元素的個數
intListLength_Sq(SqListL){
returnL.length;
}
//用e返回順序表L中第i個數據元素的值
StatusGetElem_Sq(SqListL,inti,ElemType&e){
if(i<1||i>L.length)returnERROR; //不合法
ElemType*p=L.elem+i-1;
e=*p;
returnOK;
}
//用pre_e返回順序表L中cur_e的前驅
StatusPriorElem_Sq(SqListL,ElemTypecur_e,ElemType&pre_e){
inti=LocateElem_Sq(L,cur_e);
if(i==0||i==1)returnERROR;
GetElem_Sq(L,i-1,pre_e);
returnOK;
}
//用next_e返回順序表L中cur_e的後繼
StatusNextElem_Sq(SqListL,ElemTypecur_e,ElemType&next_e){
inti=LocateElem_Sq(L,cur_e);
if(i==0||i==L.length)returnERROR;
GetElem_Sq(L,i+1,next_e);
returnOK;
}
//依次對順序表L的每個數據元素調用函數visit()
voidListTraverse_Sq(SqListL,Statusvisit(inti,ElemTypee)){
inti=1;
ElemType*p=L.elem;
while(i<=L.length){
visit(i,*p);
++i;++p;
}
}
//遍歷_輸出
Statusprint(inti,ElemTypee){
cout<<"第"<<i<<"個元素值為:"<<e<<endl;
}
main()
{
SqListL;
intchoice,reply;
ElemTypee,e2;
inti;
while(1){
cout<<"對順序表L的操作:";
cout<<"1.初始化2.插入3.刪除4.遍歷5.取值6.查找7.統計個數"<<endl;
cout<<"8.是否空表9.前驅10.後繼11.清空12.銷毀0.退出"<<endl;
cin>>choice;
switch(choice){
case1://構造一個空的順序表
reply=InitList_Sq(L);
if(reply==0)cout<<"失敗!"<<endl;
break;
case2://在順序表L的第i個元素之前插入新元素e(i的取值范圍為1≤i≤L.length+1
cout<<"請輸入新數據元素的值:";cin>>e;
cout<<"請輸入插入到表中的位序:";cin>>i;
reply=ListInsert_Sq(L,i,e);
if(reply==0)cout<<"失敗!"<<endl;
break;
case3://刪除順序表L的第i個元素,並用e返回(1≤i≤L.length
cout<<"請輸入欲刪除的數據在表中的位序:";cin>>i;
reply=ListDelete_Sq(L,i,e);
if(reply==0)cout<<"失敗!"<<endl;
else
cout<<"您刪除的數據為:"<<e<<endl;
break;
case4://依次對順序表L的每個數據元素調用函數visit()
ListTraverse_Sq(L,print);
break;
case5://用e返回順序表L中第i個數據元素的值
cout<<"請輸入位序:";cin>>i;
reply=GetElem_Sq(L,i,e);
if(reply==0)cout<<"失敗!"<<endl;
else
cout<<"表中第"<<i<<"個數據的值為:"<<e<<endl;
break;
case6://在順序表中查詢數據元素e是否存在,返回它的位序
cout<<"請輸入欲查找的數據元素的值:";cin>>e;
i=LocateElem_Sq(L,e);
if(i!=0)cout<<"該數據在表中的位序為:"<<i<<endl;
elsecout<<"該數據在表中並不存在。"<<endl;
break;
case7://返回順序表L中數據元素的個數
i=ListLength_Sq(L);
cout<<"表中有"<<i<<"個數據元素。"<<endl;
break;
case8://若順序表L為空表,則返回TRUE,否則返回FALSE
reply=ListEmpty_Sq(L);
if(reply==TRUE)cout<<"該表為空表。"<<endl;
elsecout<<"該表不是空表。"<<endl;
break;
case9://用pre_e返回順序表L中cur_e的前驅
cout<<"請輸入欲查找的數據元素的值:";cin>>e;
reply=PriorElem_Sq(L,e,e2);
if(reply==0)cout<<"失敗!"<<endl;
else
cout<<"該數據元素的前驅元素的值為:"<<e2<<endl;
break;
case10://用next_e返回順序表L中cur_e的後繼
cout<<"請輸入欲查找的數據元素的值:";cin>>e;
reply=NextElem_Sq(L,e,e2);
if(reply==0)cout<<"失敗!"<<endl;
else
cout<<"該數據元素的後繼元素的值為:"<<e2<<endl;
break;
case11://將順序表L重置為空表
ClearList_Sq(L);
break;
case12://將順序表L銷毀
DestroyList_Sq(L);
break;
case0:
exit(0);
default:
break;
}
cout<<endl;
}
}
⑽ 數據結構上機編程(單鏈表的基本操作)
void main()
{ int a[10]={12,14,15,11,19,30,20,9,4,44};/*生成數組*/
int i,e;
struct node *l,*s,*p;
l=(struct node*)malloc(sizeof(struct node));
if(!l) printf("Error!\n");
l->next=NULL;/*初始化空鏈表*/
while(i<10)
{
e=a[i];
insert(l,e);
}/*依次將數組讀入,生成一個升序的單鏈表*/
//對單鏈表實現就地逆置
template <class T>
void mylist<T>::Invert()//翻轉
{
if ( IsNull() || ncount == 1) return;
listnode<T>* m,* n;
m = first;
while (m!=NULL)
{
listnode<T>* r = n;
n = m;
m = m->link;
n->link = r;
}
first = n;
}
printf("please insert a int number(-32768~32767):");
scanf("%d",&e); /*從鍵盤輸入一個數據*/
insert(l,e);/*插入到鏈表的適當位置,並保持鏈表的有序性*/
output(l);/*列印單鏈表*/
}