网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月11日漏签0天
安徽大学计算机科...吧 关注:270贴子:235
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1 2 下一页 尾页
  • 16回复贴,共2页
  • ,跳到 页  
<<返回安徽大学计...吧
>0< 加载中...

c语言描述数据结构

  • 只看楼主
  • 收藏

  • 回复
  • 安子健守法
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
请看学习,链表,栈,队列,二叉树,图的构造即应用


  • 安子健守法
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
所有数据结构的构造都需要C语言结构体,struct
{struct*node;t data;};结构体指针,一种指向本类型的指针,就是可以指向结构体的指针,相当于一小块内存指向另一小块内存,其实这样的物理结构就构成了数据结构,每一种数据结构都有其特定的构造,但是使用结构体指针是其语法要求


2025-08-11 14:14:54
广告
不感兴趣
开通SVIP免广告
  • 安子健守法
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我们先来介绍链表,链表是一种顺序性数据结构,是一种可以进行高效插入和删除的数据结构,该数据结构可以存储网络聊天室里的用户,因为网络聊天室里的用户经常离开,所以经常需要删除是较现实的


  • 安子健守法
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
而栈也是一种顺序性数据结构,它可以先进后出,即压入数据后再从最上方弹出,因此最先进入的数椐会压在最下面,最后压入的数据在最上面,就像拆电脑时,我们一件件东西按顺序摆放摞在一起,然后从上方取出一件件安装,就不会错误了,这就是栈了


  • 安子健守法
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
队列同样是一种顺序性结构,它的特点是先进先出,就像超市排队一样,在windows程序中,会不间断产生消息,由于消息产生速度快于使用速度,所以我们用队列存放消息,处理完前面消息就再弹出消息,处理后面的


  • 安子健守法
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
二叉树是一种可以有两个子结点的数据结构,二叉树的左节点小干父节点,父节点小于右节点,因此中序便历二叉树就相当于排序数据,二叉树的另一个特点是检索数据,因为与父节点比对就可以知道向左转还是向右,二叉树的构造是struct node
{node *left;node *right;t data};


  • 安子健守法
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
散列是一种用来高效查找数据的结构,散列是一种链表数组,通过一个哈希函数如
int munstring(char *str){
int sum;
for(int i=0;str[i]!='\0';++i)
sum+=str[i]–'\0';
return (sum>>5)%99;
}
这个函数将查找的字符串比对次函数,给定一个字符串,通过这个函数就可以将字符串插入特定位置,不同字符串会插入到不同位置,这样在理论上我们通过一次哈希函数就可以查找到数据,这就是散列了


  • 安子健守法
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
堆是一种二叉树,但却用数组表示,堆的所有子结点都大于父结点,注意左右子结点没有大小关系,我们用数组,0位置存放个数,从1开始存放结点,2n和2n+1存放子结点,再堆排序中,我们取出第一个元素,将数组最后一个元素放在最前面,然后降序处理,依次类推,完成排序


2025-08-11 14:08:54
广告
不感兴趣
开通SVIP免广告
  • 安子健守法
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
图是一种链表数组,链表头是起始点,链表所拴的是到达点,而图算法皆以此而生


  • 安子健守法
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
总的来说,选择合适的数据结构可以大幅提升运行速度,节约内存,动态数据结构可以在插入数据时创建,而无需数组预置内存,节省空间,而在删除次数多时简便的使用链表,在对存取顺序有要求时使用栈和队列,对查找效率有要求时用散列,对排序和普通检索则用二叉树,当然图有其特殊的用法,程序中无时无刻都体现数据结构


  • 安子健守法
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我们先来看看链表的构造方法
struct node
{
node *next;
int data;
};
node* Insert(mode *list,int data)
{
if(list==NULL){
list=new node
list->next=NULL;
list->data=data;
return list;
}
for(node *p=list;p->next!=NULL;p=p->next);
node *tmp=new node;
tmp->data=data;
tmp->next=NULL;
p->next=tmp;
return p;
}
}
node *delete(node *list,node *p)
{
if(p==list){
list=list->next;
delete p;
return list;
}
for(node *pre=list;pre->next!=p;pre=pre->next);
pre->next=p->next;
delete p;
return list;
}
bool isempty(node*list){return list==NULL;}


  • 安子健守法
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
让我们来看看栈的构造方法,占也是一种顺序结构的数据结构
struct stack
{
int top;
int array[100];
};
void init(stack *p)
{
p->top=0;
}
void push(stack *p,int data)
{
p->array[top++]=data;
}
void pop(stack *p)
{
p->top--;
}
int top(stack *p)
{
return p->array[p->top];
}
bool empty()
{
return p->top==0;
}


  • 安子健守法
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
队列是和栈相反的顺序的数据结构,我们可以借鉴stl的queue
queue.pushback abc
queue.pushback def
queue.pushback ghi
printf queue
abc def ghi


  • 安子健守法
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
struct node
{
node *next;
int data;
};
void push(node** queue,int n)
{
if((*queue)==NULL){
(*queue)=(node*)malloc(sizeof(node))
(*queue)->data=n;
(*queue)->next=NULL;
}
else if((*queue)){
for(node*p=(*queue);p->next!=NULL;p=p->next)
{
node *q=(node*)malloc(sizeof(node));
q->data=n;
p->next=q;
}
}
}
int pop(node** queue)
{
if(*queue==NULL)
return -987121;
node*p=(*queue);
int n=p->data;
*queue=p->next;
free(p);
return n;
}
int main()
{
node *queue=NULL;
push(&queue,3);
push(&queue,2);
push(&queue,1);
printf("%d ",pop(&queue));
printf("%d ",pop(&queue));
printf("%d ",pop(&queue));
}


2025-08-11 14:02:54
广告
不感兴趣
开通SVIP免广告
  • 安子健守法
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
struct node
{
node *left;
node *right;
int data;
};
node* insert_tree(node *tree,int n)
{
if(tree==NULL:){
tree=(node*)malloc(sizeof(node));
tree->left=tree->right=NULL;
return tree;
}
else if(n<tree->data){
return insert_tree(tree->left,n);
}
else if(n>tree->data){
return insert_tree(tree->right,n);
}
}


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 16回复贴,共2页
  • ,跳到 页  
<<返回安徽大学计...吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示