当前位置:首页 » 编程语言 » 数据结构c语言邓文华
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

数据结构c语言邓文华

发布时间: 2022-01-31 12:00:25

㈠ 数据结构 c语言编程

你的 crt_linklist函数有问题,应为在你的主函数中,你在调用 crt_linklist函数时,实际上进行的的是值传递!你后来的初始化函数init_linklist以及创建链表函数crt_linklist对p都没有什么影响!这两个函数所做的工作就只是对自己的形参处理了而已,当函数调用结束时,一切又消失了,实参p还是原来的样子。你可以考虑在主函数中这样修改就可以了:

int main()
{
lnode l;
elemtype i=30;
crt_linklist(&l,i);
output_linklist(&l);
return 0;
}

这种问题自己必须想明白,我们当初学习时也经常碰到这种问题,但只要你好好想想,这些问题就都能想明白的,你可以不断实践加深自己的理解!

㈡ 邓文华的数据结构(C语言版)习题解答在哪有啊

你好哦。 有幸看到你的问题。 但是又很遗憾到现在还没有人回答你的问题。也可能你现在已经在别的地方找到了答案,那就得恭喜你啦。 可能是你问的问题有些专业了,没人会。或者别人没有遇到或者接触过你的问题,所以帮不了你。建议你去问题的相关论坛去求助,那里的人通常比较多,也比较热心,可能能快点帮你解决问题。 祝你好运~! 希望我的回答也能够帮到你! 谢谢

㈢ 数据结构(c语言)

1.数据结构是一门研究非数值计算的程序设计问题中计算机的 A 以及它们之间的 _ B 和运算等的学科。
① A. 数据元素 B. 计算方法 C. 逻辑存储 D. 数据映象
② A. 结构 B. 关系 C. 运算 D. 算法
2.数据结构被形式地定义为(K,R),其中K是 B 的有限集,R是K上的 A 有限集。
① A. 算法 B. 数据元素 C. 数据操作 D. 逻辑结构
② A. 操作 B. 映象 C. 存储 D. 关系
3.在数据结构中,从逻辑上可以把数据结构分成____C____。
A. 动态结构和静态结构 B. 紧凑结构和非紧凑结构
C. 线性结构和非线性结构 D. 内部结构和外部结构
4.算法分析的目的是 C ,算法分析的两个主要方面是 A 。
① A. 找出数据结构的合理性 B. 研究算法中的输入和输出的关系
C. 分析算法的效率以求改进 D. 分析算法的易懂性和文档性
② A. 空间复杂度和时间复杂度 B. 正确性和简单性
C. 可读性和文档性 D. 数据复杂性和程序复杂性
5.计算机算法指的是 C ,它必须具备输入、输出和 C 等5个特性。
① A. 计算方法 B. 排序方法
C. 解决问题的有限运算序列 D. 调度方法
② A. 可执行性、可移植性和可扩充性
B. 可行性、确定性和有穷性
C. 确定性、有穷性和稳定性
D. 易读性、稳定性和安全性

三、填空题
1.下面程序段的时间复杂度是___O(n*m)____。
For (i=0;i<n;i++)
For (j=0;j<m;j++)
A[i][j]=0;
2.下面程序段的时间复杂度是___O(n^(1/2))____。
i=s=0
While(s<n)
{
i++; /* i=i+1 */
s+=i; /* s=s+i */
}
3.下面程序段的时间复杂度是___O(n^2)____。
s=0;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
s+=B[i][j];
sum=s;
4.下面程序段的时间复杂度是__O(log3 N)(注:对N取3的对数)_____。
i=1;
While (i<=n)
i=i*3;

㈣ 数据结构c语言版

#include "stdio.h"
typedef char datatype;
typedef struct node{

datatype data;

struct node *next;
} stack;
stack * creat(void)
{
char ch;
stack * head;
stack *p;
head=NULL;/*初始化为空*/
ch=getchar( );
while (ch!='\n'){
p=(stack*)malloc(sizeof(stack));/*分配空间*/
p->data=ch;/*数据域赋值*/
p->next=head;/*指定后继指针*/
head=p;/*head指针指定到新插入的结点上*/
ch=getchar( );
}
return (head);
}

void MakeNull(stack *s)/*使栈s为空*/
{
stack *p=s;
while(s!=NULL){
s=s->next;
free(p);/*释放空间*/
p=s;
}
}

datatype Top(stack *s)
{
if(Empty(s))/*s为空栈,直接跳出,提示出错信息*/
printf("The stack is empty.");
else
return s->data;
}

void Pop(stack *s)
{
stack *p;
if(Empty(s)) /*s为空栈,直接跳出,提示出错信息*/
printf("The stack is empty.");
else{
p=s;
s=s->next;
free(p);/*释放栈顶空间*/
}
}

void Push(stack *s,datatype x)
{

stack *p;
p=(stack*)malloc(sizeof(stack));
p->data=x;
p->next=s;
s=p;
}

int Empty(stack *s)
{
return(s==NULL);
}

void main()
{
stack* m_stack=creat();
char m_top;
if(!Empty(m_stack))
{
m_top=Top(m_stack);
Pop(m_stack);
}
else
Push(m_stack,'a');
MakeNull(m_stack);
}

㈤ 数据结构c语言

  1. 在“printf(" the value is: ");”的前面,不是用了“Find(list,0,&x);”函数吗?这句就是想在屏幕上显示信息:“所查找的值是:”嘛。

  2. 提问的第二个语句“printf("%d",l);”里,是输出变量l“小写的字母L”的值,也就是应该是前面的“Find(list,0,&x);”执行过后,变量l“小写的字母L”的值是找到了的节点的位置数吧。

  3. 变量l“小写的字母L”,看起来应该是一个全局变量。

希望能帮到你。如有帮助,烦请点采纳,谢谢!

㈥ 数据结构(C语言)

#define Status bool
#define ElemType int
typedef struct list{
ElemType data;
struct list *next;
struct list *pre;
}*CLQueue;

Status InitCLQueue(CLQueue &rear)
{
CLQueue q = (CLQueue )malloc(sizeof(struct list));
rear = q;
rear->next = rear->pre = rear;
return true;
}

Status EnCLQueue(CLQueue &rear, ElemType x)
{
CLQueue q = (CLQueue)malloc(sizeof(struct list));
q->data = x;
if(rear->next == rear)
{
rear->next = rear->pre =q;
q->next = q->pre = rear;
rear = q;
}
else
{
q->pre = rear->next;
q->next = rear->next->next;
rear->next->next->pre = q;
rear->next->next = q;
}
return true;
}

Status DeCLQueue(CLQueue &rear, ElemType &x)
{
if(rear->next == rear) return false;
rear = rear->pre;
CLQueue q = rear->next;
q->next->pre = rear;
rear->next = q->next;
free(q);
return true;
}

㈦ 数据结构C语言

1.函数中需要修改链表头指针LC的值,所以得用引用

2.用引用的原因和上面一样,你贴的代码少了个大括号,h指向头结点,f=h->next一句将f指向链表第一个结点,也就是相当于一个无头结点链表的表头指针,因无上下文,不能推测确切意图

3.这个是你理解混乱了,这段代码是将t,p,q整体后移一位,你画个图看就比较清楚了

4.p->prior->next=q当然有用,它将前面结点的next指针指向插入的值为y的结点

5.L->next==L是指原表为空的情况,当然就是要直接放入,你改成s=L一上来就把要插入结点的指针丢失了,怎么可能完成呢

关于链表的东西你画出个大概的图会清晰许多!

㈧ 数据结构(C语言)

现在的数据结构C语言版一般都不是纯C语言(一般你仔细看书的话,书上有明说),&x是引用类型的意思(是C++里的语法)。也就是说,如果 void init_queue(linkqueue*Q)而不是void init_queue(linkqueue * &Q),则Q这个指针在init_queue这个函数内部是无论如何也不会改变指向的(虽然你能改变它指向的地址里的东西,但你无法让Q指向其它的地方,即使你写把Q重新赋了值,但,形参的改变是不会影响到实参的)
如果不明白,仔细看下下面这篇文章:
我以前写的^_^:
http://hi..com/3bian/blog/item/487d6e39af83362eb9998f51.html
看里面的“转变三、引用类型的引入”

㈨ 数据结构(c语言)

这个问题的算法要考虑周全,程序倒不复杂。以四节火车为例,
1,首先考虑四节火车进站的可能顺序有4!=24种可能。
2,出站时机有2^3=8种可能(以大写字母表入站,小写字母表出站):
出站发生一次有一种情况(ABCDdcba);
出站发生二次有三种情况(AaBCDdcb,ABbaCDdc,ABCcbaDd);
出站发生三次有三种情况(AaBbCDdc,AaBCcbDd,ABbaCcDd);
出站发生四次有一种情况(AaBbCcDd);
综上,四节火车的全部调度可能是4!×2^(4-1)=24*8=192种可能。
N节火车情况与此相似。
程序实现时可用循环或递归。