導航:首頁 > 編程語言 > 數據結構經典題目代碼

數據結構經典題目代碼

發布時間:2023-02-05 19:09:21

❶ 數據結構題目,求代碼

typedefstruct{
ElemType*elem;
intlength;
intlistsize;
}SqList;

voidMergeList(SqListLa,SqListLb,SqList&Lc){
Lc.elem=(ElemType*)malloc(sizeof(ElemType*)*(La.length+Lb.length));
if(!Lc.elem)return;
pc=Lc.elem;
pa=La.elem;pa_end=La.elem+La.length-1;
pb=Lb.elem;pb_end=Lb.elem+Lb.length-1;
while(pa<=pa_end&&pb<=pb_end){
if(*pa<*pb){
*pc++=*pa++;
}
else*pc++=*pb++;
}
while(pa<=pa_end)*pc++=*pa++;
while(pb<=pb_end)*pc++=*pb++;
}
第一個,第三個都比較簡單,給你的是第二個。別總等著現成的,混的了一是混不了一世。自己動手風衣主食

❷ 經典筆試面試知識整理,數據結構與演算法(代碼演示)

題目描述:

在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。

輸入描述: array: 待查找的二維數組 target:查找的數字

輸出描述:

查找到返回true,查找不到返回false

題目描述:

請實現一個函數,將一個字元串中的空格替換成「%20」。例如,當字元串為We Are Happy.則經過替換之後的字元串為We%20Are%20Happy。

題目描述: 輸入一個鏈表,從尾到頭列印鏈表每個節點的值。

輸入描述: 輸入為鏈表的表頭

輸出描述: 輸出為需要列印的「新鏈表」的表頭

題目描述:

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。

例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹並返回。

題目描述:

把一個數組最開始的若干個元素搬到數組的末尾,我們稱之為數組的旋轉。輸入一個遞增排序的數組的一個旋轉,輸出旋轉數組的最小元素。

例如數組{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該數組的最小值為1。 NOTE:給出的所有元素都大於0,若數組大小為0,請返回0。

1、題目描述:

大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項。n<=39

2、題目描述:

一隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上一個n級的台階總共有多少種跳法。

3、題目描述:

一隻青蛙一次可以跳上1級台階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的台階總共有多少種跳法。

4、題目描述:

我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法?

1、題目描述:

輸入一個整數,輸出該數二進製表示中1的個數。其中負數用補碼表示。

2、題目描述:

給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。

題目描述:

輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於數組的前半部分,所有的偶數位於位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。

題目描述:

用兩個棧來實現一個隊列,完成隊列的Push和Pop操作, 隊列中的元素為int類型。

題目描述:

輸入一個鏈表,輸出該鏈表中倒數第k個結點。

❸ 求解兩個數據結構的題目,具體要用c語言實現,求代碼

呵呵.我這里剛好有前些天給同學寫的一個.看下結果吧.. 代碼有點多哦.:
#include<iostream>
#include<stdlib.h>using namespace std;
typedef struct _ListNode // 此處修改為自定義數據類?
{
int data; // 結點數據
_ListNode *link; // 指向下個結點 _ListNode() // 此處添加默認的"構造函數"
{
data = 0;
link = NULL;
}
}ListNode, LinkList;
/******************************函數定義注釋頭***********************************
* 函數名 : void CreateLinkList(LinkList *head, int length)
* 開發時間 : 2010-3-19 11:00:15
* 函數功能 : 創建一個鏈表
* 全局變數和結構 : 無
* 調用的主要函數 : 無
* 返回值說明 : 返回鏈表頭結點指針
* 參數表 : head : 鏈表頭結點
length : 鏈表長度
******************************函數體定義**************************************/
LinkList * CreateLinkList(LinkList *head, int length)
{ LinkList *temp = NULL;
int predata = 0, curdata = 0;
temp = head;
for (int i = 1; i <= length; i++)
{
cout << "輸入第" << i <<"個結點data:";
head->link = new ListNode();
head = head->link; if (i == 1)
{
cin >> head->data; // 輸入第一個結點的data
predata = head->data; // 保存第一個結點的data
}
else
{
while (1)
{
//cout<<"輸入第"<<i<<"個結點的data:";
cin>>curdata;
if (curdata >= predata) // 現在輸入的數小於前一個數
{
head->data = curdata;
predata = curdata; // 修改數據
break; // 終止輸入
}
else // 否則繼續輸入
{
cout<<"error!!current data:"<<curdata<<"小於previous data:"
<<predata<<"不滿足鏈表條件,重新輸入!"<<endl;
continue;
} // if (curdata >= predata)
} // while (1)
}// if (i == 1)
}// for (int i = 1; i <= length; i++) head = temp; return(head);
}
/******************************函數定義注釋頭***********************************
* 函數名 : void Connect(const LinkList *listA,
const LinkList *listB,
LinkList *listC)
* 開發時間 : 2010-3-19 11:05:38
* 函數功能 : 進行兩個鏈表的鏈接
* 全局變數和結構 : 無
* 調用的主要函數 : 無
* 返回值說明 : 無
* 參數表 : listA : 第一個鏈表
listB : 第二個鏈表
listC : 鏈接後的鏈表頭結點
******************************函數體定義**************************************/
void Connect(const LinkList *listA, const LinkList *listB, LinkList *listC)
{
const ListNode *pointer1 = NULL;
const ListNode *pointer2 = NULL;
ListNode *pointer3 = NULL;
pointer1 = listA->link;
pointer2 = listB->link; pointer3 = listC;
while ((pointer1 != NULL) && (pointer2 != NULL))
{
pointer3->link = new ListNode();
pointer3 = pointer3->link;
if (pointer1->data <= pointer2->data)
{
pointer3->data = pointer1->data;
pointer1 = pointer1->link; // 修改指針
}
else
{
pointer3->data = pointer2->data;
pointer2 = pointer2->link; // 修改指針
}
} // 將剩餘的數據添加到鏈接後的鏈表中
if (pointer1 == NULL)
{
while (pointer2 != NULL)
{
pointer3->link = new ListNode();
pointer3 = pointer3->link; pointer3->data = pointer2->data;
pointer2 = pointer2->link;
}
}
if (pointer2 == NULL)
{
while (pointer1 != NULL)
{
pointer3->link = new ListNode();
pointer3 = pointer3->link; pointer3->data = pointer1->data;
pointer1 = pointer1->link;
}
}
}/******************************函數定義注釋頭***********************************
* 函數名 : void Display(const LinkList *list)
* 開發時間 : 2010-3-19 13:18:15
* 函數功能 : 輸出一個鏈表中的數據
* 全局變數和結構 : 無
* 調用的主要函數 : 無
* 返回值說明 : 無
* 參數表 : list : 鏈表頭結點
******************************函數體定義**************************************/
void Display(const LinkList *list)
{
const ListNode *p = NULL;
p = list->link; cout<<endl<<"這個鏈表中的數據為:"<<endl;
while (p != NULL)
{
cout<<p->data<<" ";
p = p->link;
} cout<<endl;
}
/******************************函數定義注釋頭***********************************
* 函數名 : void Destroy(LinkList *list)
* 開發時間 : 2010-3-19 13:20:23
* 函數功能 : 銷毀一個鏈表
* 全局變數和結構 : 無
* 調用的主要函數 : 無
* 返回值說明 : 無
* 參數表 : 鏈表頭結點
******************************函數體定義**************************************/
void Destroy(LinkList *list)
{
ListNode *p = NULL;
ListNode *temp = NULL;
p = temp = list;
while(p != NULL)
{
temp = p->link;
delete p;
p = temp;
} list = NULL;
}/******************************函數定義注釋頭***********************************
* 函數名 : void main()
* 開發時間 : 2010-3-19 13:02:47
* 函數功能 :
* 全局變數和結構 :
* 調用的主要函數 :
* 返回值說明 :
* 參數表 :
******************************函數體定義**************************************/
void main()
{
ListNode *h_first = NULL;
ListNode *h_second = NULL; // 分別為第一個和第二個鏈表的頭結點
ListNode *h_result = NULL; // 鏈接後的鏈表頭結點
int length = 0; // 鏈表長度
h_first = new ListNode();
h_second = new ListNode(); // 分配空間 cout << "請輸入第一個鏈表的長度:";
cin >> length;
h_first = CreateLinkList(h_first, length);
cout << "請輸入第二個鏈表的長度:";
cin >> length;
h_second = CreateLinkList(h_second, length); Display(h_first);
Display(h_second); h_result = new ListNode();
Connect(h_first, h_second, h_result);
Display(h_result);
Destroy(h_first);
Destroy(h_second);
Destroy(h_result);

❹ 數據結構c 語言版題目,求代碼!!! 請一定用C語言,求大神幫忙

如圖

/*
小L居住的地方有很多城市...
作者:q839219286
演算法思想:城市圖採用DFS搜索,搜索終止條件是:到達終點或Vmax-Vmin>dV
設dV=Vmax-Vmin,求dV的方法是利用Vmax、Vmin的遞歸歷史記錄
圖結構採用「鄰接表」法,存儲結構採用數組。
*/
//C語言版
#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
//宏定義函數
#defineMAX(a,b)(a)>(b)?(a):(b)
#defineMIN(a,b)(a)<(b)?(a):(b)
//圖節點結構(鄰接表法)
structVNode{
structEdge*next;
charvisited; //是否在本路徑中訪問過,=1是;=0否
};
//圖的邊結構(鄰接表法)
structEdge{
intv; //道路的行駛速度
structVNode*adjVex; //道路通向的城市節點
structEdge*next;
};
#definemax_Vex500
#definemax_Edge5000
//最多500個城市(其中下標為0不使用)
structVNodevex[max_Vex+1];
structEdgeedge[max_Edge*2]; //一條邊有兩個節點需要記錄
intvex_Num,edge_Num;
structVNode*start,*end; //起點、終點
intminDIF; //已經找到的通往終點路徑中Vmax-Min的最小差值

voidaddEdge(intUi,intVi,intWi);//新增Ui通往Vi的道路
voidbuildGraph();
voidDFS(structVNode*vex,intVmax,intVmin);
intmain(){
intQ; scanf("%d",&Q); //一個整數Q,代表有多少組測試數據。
intout[5],i; //2≤Q≤5
for(i=0;i<Q;i++){
buildGraph(); //scanf已包含在內
DFS(start,-1,INT_MAX-1);
out[i]=minDIF;
}
//輸出最終結果
for(i=0;i<Q;i++){
printf("%d ",out[i]);
}
//getchar();getchar(); //防止閃退
return0;
}
voidDFS(structVNode*vex,intVmax,intVmin){
if(Vmax-Vmin>=minDIF)return; //一旦超限,則沒有繼續遍歷的意義
if(vex==end){ //到達終點
minDIF=Vmax-Vmin; //已經保證Vmax-Vmin<minDIF
}else{ //繼續遍歷
vex->visited=1; //防止DFS無限循環
structEdge*next;
for(next=vex->next;
next!=NULL;next=next->next){
if(0==next->adjVex->visited) //下一節點不在已走過的節點
DFS(next->adjVex,MAX(next->v,Vmax),MIN(next->v,Vmin));
}
vex->visited=0; //時光倒流
}
}
//新增Ui通往Vi的道路
voidaddEdge(intUi,intVi,intWi){
edge[edge_Num].adjVex=vex+Vi;
edge[edge_Num].v=Wi;
edge[edge_Num].next=vex[Ui].next; //鏈表頭插法
vex[Ui].next=edge+edge_Num;
edge_Num++;
}
voidbuildGraph(){
introad_Num,i,startID,endID;
structVNode*p_V;
scanf("%d%d",&vex_Num,&road_Num);
//初始化節點。倒序遍歷,注意vex[0]不算入。其實可以用memset()秒殺的,我寫的是原生代碼版本
for(p_V=vex+vex_Num;p_V>vex;p_V--){
p_V->next=NULL;
p_V->visited=0;
}
//注意road_Num條道路有2*edge_Num個鄰接表邊
edge_Num=0;
for(;road_Num>0;road_Num--){ //road_Num條道路讀入road_Num行數據
intUi,Vi,Wi;//3個整數Ui,Vi,Wi,(i=1,…..,M),道路的兩個城市編號和道路的行駛速度。
scanf("%d%d%d",&Ui,&Vi,&Wi);
//注意兩個方向都要添加
addEdge(Ui,Vi,Wi);
addEdge(Vi,Ui,Wi);
}
//餘下數據賦值
scanf("%d%d",&startID,&endID);
start=vex+startID;
end=vex+endID;
minDIF=INT_MAX;
}

❺ 數據結構代碼題


您好,已經解決了


#include <stdio.h>

#include <stdlib.h>


int main()

{

int i, k;

int n = 10;

int x, a[100] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};


printf("x= ");

scanf("%d", &x);


for(i = n - 1; i >= 0 && a[i] > x; i--)

a[i + 1] = a[i];

a[i + 1] = x;

n++;


for(i = 0; i < n; i++) // 依次輸出線性表中的元素版

printf("%d ", a[i]);


return 0;

}


採納權哦~

❻ 數據結構c 語言版題目,求代碼!!!

#include<stdio.h>
voidsort(int*a,intleft,intright){
if(left>=right){
return;
}
inti=left;
intj=right;
intkey=a[left];
while(i<j){
while(i<j&&key<=a[j]){
j--;
}
a[i]=a[j];
while(i<j&&key>=a[i]){
i++;
}
a[j]=a[i];
}
a[i]=key;
sort(a,left,i-1);
sort(a,i+1,right);
}

intmain(){
intn,count=0;
charstr[1000];
inta[1000];
scanf("%d",&n);
getchar();
intm[n];
for(inti=0;i<n;i++){
gets(str);
intindex1=0,flag=1,index2=0,length=0;
while(str[index1]!=''){
length++;
switch(str[index1++]){
case'{':{
a[index2++]=1;
break;
}
case'[':{
a[index2++]=2;
break;
}
case'(':{
a[index2++]=3;
break;
}
case')':{
if(a[index2-1]==3)index2--;
elseflag=0;
break;
}
case']':{
if(a[index2-1]==2)index2--;
elseflag=0;
break;
}
case'}':{
if(a[index2-1]==1)index2--;
elseflag=0;
break;
}
default:{
flag=0;
break;
}
}
if(flag==0)break;
}
if(flag){
m[count++]=length;
}
//a={0};
//str={''};
}
printf("%d ",count);
for(inti=0;i<count;i++){
printf("%6d",m[i]);
}
printf(" ");
sort(m,0,count-1);
if(count%2==0)printf("%d",(m[count/2]+m[count/2-1])/2);
elseprintf("%d",m[(count-1)/2]);
}

❼ c語言數據結構代碼題

#include<stdio.h>

int main()

{

int s[111]={0};

int p;

int r[111]={0};

int n=0;

do{

scanf("%d",&r[n++]);

}while(getchar()!=' ');//回車結束輸入,輸入n個數

scanf("%d",&p);//要截取的數組長度

for(int i=0;i<p;i++)

s[i]=r[i];//前p個數暫存在數組s中;

for(int i=p;i<n;i++)

r[i-p]=r[i];//後n-p個數移至數組前部(左邊)

for(int i=n-p,j=0;i<n;i++,j++)

r[i]=s[j];//將數組s中暫存的數據賦值個數組r的後部(右邊);

for(int i=0;i<n;i++)

printf("%d ",r[i]);

return 0;

}

閱讀全文

與數據結構經典題目代碼相關的資料

熱點內容
c語言12位的數據應該怎麼存儲 瀏覽:953
將ape導入iphone 瀏覽:107
js組合快捷鍵 瀏覽:174
linux系統盤默認掛在的文件夾 瀏覽:667
淘寶數據包如何操作上架 瀏覽:567
vb編程中輸入cls是什麼意思 瀏覽:81
linuxtime服務 瀏覽:184
瘋狂安卓講義第二版代碼 瀏覽:420
老炮兒三小時版本下載 瀏覽:313
matlab怎麼調試程序 瀏覽:2
winxp升級win7的危害 瀏覽:496
網路沒連上卻不可用是怎麼回事 瀏覽:752
社區版本 瀏覽:738
怎麼查微信公眾號什麼時候開通的 瀏覽:717
安裝三菱編程閃退怎麼回事 瀏覽:488
手機怎麼創建word文件格式 瀏覽:694
c語言連接資料庫 瀏覽:887
數據線粉色和白色哪個是正 瀏覽:775
vb編程應注意什麼 瀏覽:855
js循環添加控制項 瀏覽:615

友情鏈接