師大數據結構歷年真題-創(chuàng)新互聯

//2014數據結構865

//1.單鏈表結點的刪除
LNode Delete(LinkList &L,int K){LNode p=L->next;
	LNode pre=L;
	while(p!=NULL){if(p->data>K){	pre->next=p->next;
			Delete(p);
			return p;
		}
		pre=p;
		p=p->next;
	}
	return -1;
}

//2.求鄰接表存儲有向圖頂點的出度
typedef struct ArcNode{int adjvex;
	struct ArcNode *nextarc;
}ArcNode;
typedef struct{VertexType data;
	struct ArcNode *firstArc;
}VNode;
typedef struct{VNode adjlist[MAX_NUM];
	int v,e;
}ALGraph;
void OutDu(ALGraph G,int h){int n=0;
	ArcNode *e;
	while(G.adjlist[h].firstArc!=0)
		n++;
		e=G.adjlist[h].firstArc->nextarc;
		G.adjlist[h].firstArc=e;
	}
	print("%d",n);
}

//3.快速排序
void QuickSort(ElemType A[],int low,int high){if(lowint pivotpos=Partition(A,low,high);
		QuickSort(A,low,pivotpos-1);
		QuickSort(A,pivotpos+1,high);
	}
}
int Partition(ElemType A[],int low,int high){int pivot=A[low];
	while(lowwhile(low=pivot) j--;
		A[low]=A[high];
		while(lowif(T!=NULL){visit(T);
		L_Order(T->lchild);
		R_Order(T->rchild);
	}
}
void L_Order(BiTree T){if(T!=NULL){L_Order(T->lchild);
		visit(T);
		L_Order(T->rchild);
	}
}
void R_Order(BiTree T){if(T!=NULL){R_Order(T->rchild);
		visit(T);
		R_Order(T->lchild);
	}
}

//2015數據結構865

//1.單鏈表結點的刪除
void Delete(LinkList &L,int k){LNode p=L->next;
	LNode pre=L;
	while(p!=NULL){if(p->data	pre->next=p->next;
			free(p);
			p=pre->next;
		}
		pre=p;
		p=p->next;
	}
}

//2.求有向圖頂點的入度和出度
typedef struct ArcNode{int adjvex;
	ArcNode *nextarc;
}ArcNode;
typedef struct{VertexType data;
	ArcNode *firstarc;
}VNode;
typedef struct{VNode adjlist[MAX_NUM];
	int v,e;
}ALGraph;
void OutDu(ALGraph G){int n=0,i=0;
	ArcNode *e;
	for(i=0;iwhile(G.adjlist[i].firstarc!=NULL){	n++;
			e=G.adjlist[i].firstarc->nextarc;
			G.adjlist[i].firstarc=e;
		}
		printf("%d",n);
		n=0;
	}
}
void InDu(ALGraph G){int i,j,n=0;
	int A[G.v];
	ArcNode *e;
	for(i=0;iA[i]=0;
	}
	for(j=0;jwhile(G.adjlist[j].firstarc!=NULL){	A[G.adjlist[j].firstarc->adjvex]++;
			e=G.adjlist[j].firstarc->nextarc;
			G.adjlist[j].firstarc=e;
		}
	}
	for(i=0;iprintf("%d",A[i]);
	}
}

//3.快速排序-略

//4.將二叉樹葉子結點形成一個單鏈表
typedef struct BiTree{char data;
	struct BiTree *lchild;
	struct BiTree *rchild;
};
struct BiTree *pre=NULL;
struct BiTree *h=(struct BiTree *)malloc(sizeof(struct BiTree));
BiTree *LeafLink(BiTree *b){if(b){LeafLink(b->lchild);
		if(!b->lchild && !b->rchild){//鏈表加入條件
			if(pre==NULL){//處理第一個結點
				h=b;
				pre=b;
			}else{//使用尾插法不斷插入葉子節(jié)點,使用pre指針指向最后一個結點
				pre->rchild=b;
				pre=b;
			}
		}
		LeafLink(b->rchild);
		pre->rchild=NULL;
	}
	return h;
}

//2016數據結構865

//1.單向鏈表結點的刪除 略

//2.求二叉樹樹高
int Tree_Height(BiTree *T){int h=0,h1=0,hr=0;
	if(T==NULL){return 0;
	}else{h1=Tree_Height(T->lchild);
		hr=Tree_Height(T->rchild);
		h=((h1>hr)?h1:hr)+1;
		return h;
	}
}

//3.有向圖鄰接表表示增加一條邊
typedef struct VNode{int data;
	struct VNode *next;
}VNode, *NodeList;
typedef struct{NodeList V[MAX_NUM];
	int vexnum,arcnum;
}ALGraph;
void InsertArc(ALGraph G){int c1,c2;
	cin>>c1>>c2;
	NodeList p1=new VNode;
	p1->data=c2;
	p1->next=G.V[c1]->next;
	G.V[c1]->next=p1;
}

//4.求一維數組遞歸
int Sum(int A[],int len){if(len==1){return A[len-1];
	}else{return A[len-1]+Sum(A,len-1);
	}
}

//2017數據結構865

//1.遞歸計算平均值
int Average(int A[],int i){if(i==0) return A[0];
	else return (Average(A[i-1],i-1)*(i-1)+A[i-1])/i;
}

//2.判斷括號匹配函數
void ExpIsCorrect(char exp[],int n){SeqStack mystack;
	int i;
	char c;
	StackInitiate(&mystack);
	for(i=0; iif(exp[i] == "(") StackPush(&mystack, exp[i]);
		else if(exp[i] == ")" && StackNotEmpty(mystack)){	StackTop(mystack,&c);
			if(c == "("){		StackPop(&mystack,&c);
			}else{		printf("左右括號不匹配\n");
				return;
			}
		}
		else if(exp[i] == ")" && !StackNotEmpty(mystack)){	printf("右括號多于左括號\n");
			return;
		}
	}
	if(StackNotEmpty(mystack)){printf("左括號多于右括號\n");
	}else{printf("括號完全匹配\n");
	}
}

//3.鄰接表存儲圖的頂點出度統(tǒng)計
void InDegree(AdjGraph G){Node *p;
	int i,inD;
	for(i=0;iinD=0;
		p=G.adj[i].first;
		while(p){	inD++;
			p=p->next;
		}
		printf("頂點%d的出度為%d\n",i,inD);
	}
}

//4.二叉樹的層序遍歷
void LevelOrder(BiTree T){InitQueue(Q);
	BiTree p;
	EnQueue(Q,T);
	while(!IsEmpty(Q)){DeQueue(Q,p);
		visit(p);
		if(p->lchild!=NULL)
			EnQueue(Q,p->lchild);
		if(p->rchild!=NULL)
			EnQueue(Q,p->rchild);
	}
}

//2018數據結構865

//1.折半查找
int Binary_Search(SeqList L,ElemType key){int low=0,high=L.len-1,mid;
	while(lowmid = (low+high)/2;
		if(L.Elem[mid]==key){	return mid;
		else if(L.Elem[mid]	low=mid+1;
		}else{	high=mid-1;
		}
	}
	return -1;
}

//2.蘋果問題 略

//3.求樹高
int Height(BiTree T){if(T==NULL) return 0;
	int lh=Height(T->lchild);
	int rh=Height(T->rchild);
	if(lhreturn rh+1;
	}else{return lh+1;
	}
}

//4.二叉樹層序遍歷 略

//2019數據結構865

//1.二叉樹先序遍歷 略

//2.希爾排序
void ShellSort(ElemType A[],int n){for(int dk=n/2;dk>=1;dk=dk/2){for(int i=dk+1;i<=n;i++){	if(A[i]		A[0]=A[i];
				for(int j=i-dk;j>0 && A[0]A[j+dk]=A[j];
				}
				A[j+dk]=A[0];
			}
		}
	}
}

//3.鄰接表建圖
int MaxNum=2010;
int n=0;
vectoradj[MaxNum];
void CreatMap(){scanf("%d",&n);
	for(int i=1;i<=n;i++){int m=0;
		scanf("%d",&m);
		for(int j=1;j<=m;j++){	int next;
			scanf("%d",&next);
			adj[next].push_back(i);
		}
	}
}

//4.十字鏈表的輸出

//十字鏈表存儲表示
typedef struct OLNode{int i,j;//該非零元的行標和列標
	ElemType e;//非零元元素值
	OLNode *right,*down;//該非零元所在行表和列表
}OLNode, *OLink;
typedef struct{OLNode *rhead,*chead;//行表和列表頭指針
	int mu,nu,tu;//稀疏矩陣的行數、列數和非零元數
}CrossList;
void OutCSM(CrossList M,void(*Out3)(int,int,int)){int i;
	OLink p;
	for(i=1;i<=M.mu;i++){p=M.rhead[i];//p指向每一行的基址
		while(p){	Out3(p->i,p->j,p->e);
			p=p->right;
		}
	}
}

//2020數據結構865

//1.非遞歸實現二叉樹中序遍歷
void InOrder2(BiTree T){InitStack(S);
	BiTree p=T;
	while(p||!IsEmpty(S)){if(p){	Push(S,p);
			p=p->lchild;
		}else{	Pop(S,p);
			visit(p);
			p=p->rchild;
		}
	}
}

//2.拓撲排序
vectorG[MAXV];
int n,InDegree[MAXV];
bool ToPo_Logical_Sort(){int num=0;
	queueq;
	for(int i=0;iif(InDegree[i]==0){	q.push(i);
		}
	}
	while(!q.empty()){int u=q.front();
		q.pop();
		for(int j=0;j	int v=G[u][j];
			InDegree[v]--;
			if(InDegree[v]==0)
				q.push(v);
		}
		G[u].clear();
		num++;
	}
	if(num==n) return true;
	else return false;
}

//3.改進的快速排序算法 略

//2021數據結構865

//1.遞歸實現折半查找
int Binary_Search(SeqList L,ElemType key,int low,int high){if(lowmid=(low+high)/2;
		if(L.elem[mid]==key)
			return mid;
		else if(L.elem[mid]for(int v=0;vvisit(v);
	visited[v]=true;
	for(w=FirstNeighbor(G,v);w>=0;w=NextNeighbor(G,v,w)){if(!visited[w])
			DFS(G,w);
	}
}

//3.二叉排序樹進行排序
void Creat_BST(BiTree &T,KeyType str[],int i){T=NULL;
	int i=0;
	while(iBST_Insert(T,str[i]);
		i++;
	}
}
int BST_Insert(BiTree &T,KeyType k){if(T==NULL){T=(BiTree)malloc(sizeof(BSTNode));
		T->data=k
		T->lchild=T->rchild=NULL;
		return 1;
	}
	else if(k==T->data)
		return 0;
	else if(kdata)
		return BST_Insert(T->lchild,k);
	else
		return BST_Insert(T->rchild,k);
}

//2021數據結構885

//1.BFS算法
bool visited[MAX_NUM];
void BFSTraverse(Graph G){for(int i=0;ivisit(v);
	visited[v]=true;
	EnQueue(Q,v);
	while(!IsEmpty(Q)){DeQueue(Q,v);
		for(w=FirstNeighbor(G,v);w>=0;w=NextNeighbor(G,v,w)){	if(!visited[w]){		visit(w);
				visited[w]=true;
				EnQueue(Q,w);
			}
		}
	}
}

//2.BFS求單源最短路徑問題
void BFS_MIN_Distance(Graph G,int u){for(int i=0;id[i]=9999;
	}
	visited[u]=true;
	d[u]=0;
	EnQueue(Q,u);
	while(!IsEmpty(Q)){DeQueue(Q,u);
		for(w=FirstNeighbor(G,v);w>=0;w=NextNeighbor(G,v,w)){	if(!visited[w]){		visited[w]=true;
				d[w]=d[u]+1;
				EnQueue(Q,w);
			}
		}
	}
}

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧

為澧縣等地區(qū)用戶提供了全套網頁設計制作服務,及澧縣網站建設行業(yè)解決方案。主營業(yè)務為網站建設、網站設計、澧縣網站設計,以傳統(tǒng)方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

分享名稱:師大數據結構歷年真題-創(chuàng)新互聯
網站路徑:http://muchs.cn/article36/pgepg.html

成都網站建設公司_創(chuàng)新互聯,為您提供標簽優(yōu)化、動態(tài)網站、軟件開發(fā)、虛擬主機、網站維護品牌網站制作

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

成都做網站