导航:首页 > 编程语言 > 数据结构经典题目代码

数据结构经典题目代码

发布时间: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;

}

阅读全文

与数据结构经典题目代码相关的资料

热点内容
js循环添加控件 浏览:615
学习计算机网络的作用 浏览:235
access数据库最新内容怎么调 浏览:203
上古世纪新版本跑商 浏览:267
iphone5国际漫游设置 浏览:107
ipodwatch如何安装app 浏览:114
谁有微信抢红包的群号 浏览:872
word07页码从任意页开始 浏览:791
js禁止滑动事件 浏览:800
苹果查序号怎么看不是 浏览:61
linux在txt文件 浏览:568
ps如何导入文件匹配 浏览:201
转转app怎么把自己的账号租出去 浏览:828
福昕阅读器合并照片pdf文件 浏览:591
vhd文件有什么用 浏览:482
编程小朋友看什么书 浏览:623
经营如何让数据说话 浏览:258
如何在手机上升级opop 浏览:614
coreldrawx5免费视频教程 浏览:725
网站引导页面源码 浏览:234

友情链接