当前位置:首页 » 编程语言 » c语言版的数据结构

c语言版的数据结构

发布时间: 2022-08-06 06:16:41

⑴ 数据结构(c语言版)

测试数据1:
创建二叉树,输入先序扩展序列:ABD##E##C#F##
先序遍历输出节点:ABDECF
中序遍历输出节点:DBEACF
后序遍历输出节点:DEBFCA

二叉树示意图:
A
/
BC
//
DE#F
///
######


测试数据2:
创建二叉树,输入先序扩展序列:ABC##DE#G##F###
先序遍历输出节点:ABCDEGF
中序遍历输出节点:CBEGDFA
后序遍历输出节点:CGEFDBA

二叉树示意图:
A
/
B#
/
CD
//
##EF
//
#G##
/
##


#include<stdio.h>
#include<stdlib.h>

typedefstructNode//二叉树的结构体
{
chardata;//字符
structNode*lchild;//左分支
structNode*rchild;//右分支
}Bitree;

//创建二叉树:用"先序遍历"(递归法)
voidCreateBiTree(Bitree**bt)
{
charch;
scanf("%c",&ch);//输入字符
if(ch=='#')//'#'是空节点NULL
*bt=NULL;
else
{
*bt=(Bitree*)malloc(sizeof(Bitree));
(*bt)->data=ch;
CreateBiTree(&((*bt)->lchild));
CreateBiTree(&((*bt)->rchild));
}
}

//用"先序遍历"输出节点(递归法)
voidpreOrder(Bitree*ptr)
{
if(ptr!=NULL)
{
printf("%c",ptr->data);
preOrder(ptr->lchild);
preOrder(ptr->rchild);
}
}

//用"中序遍历"输出节点(递归法)
voidinOrder(Bitree*ptr)
{
if(ptr!=NULL)
{
inOrder(ptr->lchild);
printf("%c",ptr->data);
inOrder(ptr->rchild);
}
}

//用"后序遍历"输出节点(递归法)
voidpostOrder(Bitree*ptr)
{
if(ptr!=NULL)
{
postOrder(ptr->lchild);
postOrder(ptr->rchild);
printf("%c",ptr->data);
}
}

intmain()
{
Bitree*root;
printf("创建二叉树,输入先序扩展序列:");
CreateBiTree(&root);

printf("先序遍历输出节点:");
preOrder(root);
printf(" 中序遍历输出节点:");
inOrder(root);
printf(" 后序遍历输出节点:");
postOrder(root);

printf(" ");
return0;
}

⑵ C语言版数据结构

你试试看不要把你定义的头文件存在include《》那里面,编译器不会找,在你的直接新建一个头文件,存在和代码一起的目录,把你的定义的东西写进去,再试试

⑶ C语言的数据结构是什么

数据结构,data strucure 是具有特定关系的数据元素的集合。它包含两方面的信息:D+S
D 即数据元素的集合,也就是数据对象;S 数据元素间的关系,而这种关系指的是数据元素之间本身的关系 也叫做逻辑结构!而这种逻辑结构需要通过一种高级语言 比如c语言才能使得将这种逻辑结构在计算机中表现出来 也就是通过高级语言存储结构。

⑷ c语言版的数据结构和c++版的数据结构有什么不同

C语言和C++描述数据结构最大的区别在于设置思想,C语言是一种结构化程序设计语言,而C++是一种面向对象的程序设计语言,它两者的区别主要在于数据和操作的关系。

C语言是定义数据类型,数据类型定义变量,然后函数操作变量,换句话说C语言是“操作的数据”。
C++是定义类,类本身就具备操作,换句话说,C++是“数据的操作”。

⑸ c语言 数据结构

第一个,从定义的结构体来看是链队,以链表来保存数据。
第二个,是顺序队列,以数组来保存数据。
下面回答你的问题:这两个是不是表示的意思一样的?都是表示循环队列?

根据上面的解释可知,他们两的意思不一样。链队与顺序队列都是队列,但实现方法不同。
至于循环队列,一般是以第二种方式定义的。

⑹ 数据结构(C语言版)的内容简介

《数据结构》(C语言版)是为“数据结构”课程编写的教材,也可作为学习数据结构及其算法的C程序设计的参数教材。
本书的前半部分从抽象数据类型的角度讨论各种基本类型的数据结构及其应用;后半部分主要讨论查找和排序的各种实现方法及其综合分析比较。其内容和章节编排1992年4月出版的《数据结构》(第二版)基本一致,但在本书中更突出了抽象数据类型的概念。全书采用类C语言作为数据结构和算法的描述语言。
本书概念表述严谨,逻辑推理严密,语言精炼,用词达意,并有配套出版的《数据结构题集》(C语言版),便于教学,又便于自学。
本书后附有光盘。光盘内容可在DOS环境下运行的以类C语言描述的“数据结构算法动态模拟辅助教学软件,以及在Windows环境下运行的以类PASCAL或类C两种语言描述的“数据结构算法动态模拟辅助教学软件”。
本书可作为计算机类专业或信息类相关专业的本科或专科教材,也可供从事计算机工程与应用工作的科技工作者参考。

⑺ 数据结构(c语言版)

谈谈如何学习数据结构:
1.如果你没有学过C语言,或者C语言学的不好的时候把数据结构当成一本数学书来学,它所讲述的都是一些简单的图论。在你的大脑中的主线不能丢失:线性结构,树结构和图结构。当你不再考虑复杂的程序设计时,仅仅研究个个离散点之间的关系,似乎数据结构也就不会那么难了。
2.学习好了抽象的离散点关系后,再巩固一下你的C语言水平,书中描述的都是类C。因此你只要学习简单的C定义、判断、循环语句就基本能看的懂课本中所有程序了。
3.以上都完成后,从数据结构的线性表开始。线性表中顺序表似乎是为你学习C语言设计的,学好线性表的链表是你起步的关键。后面的树结构,图结构,排序,查找都少不了链式结构,往往这个也是最难的。
4.看程序的时候一定要自己在纸上画画,最好先学会画程序的流程图,也许那样你学程序也就会更快一些。
5.数据结构是程序设计的最基本也是最有用的地方,学完之后你会受益匪浅的,也许这本书可以决定你以后的道路或者命运。
祝你成功!

⑻ 跪求数据结构(c语言版)的几个问题解答

实验一
单链表有一个头节点h
e
a
d,指向链表在内存的首地址。链表中的每一个节点的数据类型为结构体类型,节点有两个成员:整型成员(实际需要保存的数据)和指向下一个结构体类型节点的指针即下一个节点的地址(事实上,此单链表是用于存放整型数据的动态数组)。链表按此结构对各节点的访问需从链表的头找起,后续节点的地址由当前节点给出。无论在表中访问那一个节点,都需要从链表的头开始,顺序向后查找。链表的尾节点由于无后续节点,其指针域为空,写作为N
U
L
L。
删除运算是将表的第i个结点删去。
具体步骤:
(1)找到要删除结点ai的存储位置p(因为在单链表中结点ai的存储地址是在其直接前趋结点ai-1的指针域next中)
(2)令p->next指向ai的直接后继结点(即把ai从链上摘下)
(3)释放结点ai的空间,将其归还给"存储池"。
插入运算是将值为x的新结点插入到表的第i个结点的位置上,即插入到ai-1与ai之间。
具体步骤:
(1)找到ai-1存储位置p
(2)生成一个数据域为x的新结点*s
(3)令结点*p的指针域指向新结点
(4)新结点的指针域指向结点ai。
#include<stdio.h>
typedef
int
numtype;
typedef
float
scoretype;
typedef
struct
node
{numtype
num;
scoretype
score;
struct
node
*next;
}linklist;
int
n;
//创建单链表
linklist
*creat()
{
linklist
*head,*p1,*p2;
n=0;
p1=p2=(linklist*)malloc(sizeof(linklist));
printf("请输入第1个学号:\n");
//单链表内容,学号和成绩
scanf("%d",&p1->num);
printf("请输入第1个成绩:\n");
scanf("%f",&p1->score);
head=NULL;
while(1)
{n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(linklist*)malloc(sizeof(linklist));
printf("请输入第%d个学号:\n",n+1);
scanf("%d",&p1->num);
if(p1->num
==
0)
//这里是终止输入的符号,也就是学号输入0,那么就停止输入。你也可以设置为其它的符号
break;
printf("请输入第%d个成绩:\n",n+1);
scanf("%f",&p1->score);
}
p2->next=NULL;
return
head;
}
//单链表的插入
linklist
*insert(linklist
*head,linklist
*stud)
{
linklist
*p1,*p2,*p0;
p1=head;
p0=stud;
if(head==NULL)
{
head=p0;p0->next=NULL;}
else
{
while((p0->score>=p1->score)&&(p1->next!=NULL))
{
p2=p1;p1=p1->next;
}
if(p0->score<p1->score)
{
if(head==p1)
head
=p0;
else
p2->next=p0;
p0->next=p1;}
else
{
p1->next=p0;
p0->next=NULL;
}
}
return
head;
}
//单链表的删除
linklist
*del(linklist
*head,float
dscore)
{
linklist
*p1,*p2;
if(head==NULL)
{printf("\n
list
is
NULL!");
return
(head);
}
else
{
p1=head;
while((dscore!=p1->score)&&(p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(dscore
==
p1->score)
{
if(p1==head)
head=head->next;
else
p2->next=p1->next;
free(p1);
printf("已删除:%.2f\n",dscore);
}
else
printf("%.2f
没有在链表中找到!\n",dscore);
}
return
head;
}
//输出单链表
void
display(linklist
*r)
{linklist
*t;
t=(linklist*)malloc(sizeof(linklist));
t=r;
printf("\n
单链表显示
:\n学号\t成绩\n");
if(t==NULL)
printf("链表为空。");
else
while(t!=NULL)
{
printf("%d\t",t->num);
printf("%.2f\n
",t->score);
t=t->next;
}
printf("\n");
}
//单链表的插入与删除
int
main()
{
float
s;
linklist
*q,*p;
p=(linklist*)malloc(sizeof(linklist));
q=creat();
display(q);
printf("请输入要删除的结点对应的成绩:");
scanf("%f",&s);
q=del(q,s);
display(q);
printf("请输入要插入的学号和成绩:\n");
printf("学号:");
scanf("%d",&p->num);
printf("成绩:");
scanf("%f",&p->score);
q=insert(q,p);
display(q);
return
0;
}

⑼ C语言版的数据结构问题

struct node *current; //定义一个临时结构指针,指向当前结点

for(current=&h; (curren->data != a) && (current->next != NULL); )
current=next; //如果当前结点的值不等于a,并且不是最后一个结点,指向下一个结点
s.next=current->next; //找到满足条件的节点后,插入结点s

current->next=&s;

⑽ 数据结构(c语言版)和数据结构区别

C语言是一种编程的语言,编程的语言有很多种。
而数据结构则是讲的是关于一些数据的理论知识。
可以说不管什么编程语言都能用到数据结构的知识,数据结构是程序设计基础又核心的知识。
可以将c语言想象为一种语言,那么数据结构就是一种说话的技巧,如何让你说话更简洁,有逻辑,容易让人听懂,这表达技巧不管你用中文或者ENGLISH都可以用上。
当然,如果你想成为一个优秀的程序设计人员,数据结构是必须掌握好的

热点内容
win7ftp用户名和密码设置 发布:2025-01-22 17:46:48 浏览:221
三表联查的sql语句 发布:2025-01-22 17:27:13 浏览:418
安卓怎么解压分卷压缩 发布:2025-01-22 17:24:59 浏览:721
欧姆龙plc编程语言 发布:2025-01-22 17:21:48 浏览:396
和值编程 发布:2025-01-22 17:20:07 浏览:518
微信青少年模式独立密码是什么 发布:2025-01-22 16:52:06 浏览:590
腾讯云服务器怎么购买 发布:2025-01-22 16:45:01 浏览:631
天猫怎么上传视频 发布:2025-01-22 16:40:02 浏览:728
安卓如何把抖音评论换成黑色 发布:2025-01-22 16:30:57 浏览:702
连接池Java 发布:2025-01-22 16:28:27 浏览:260