c语言数据结构线性表练习题
// -
#包含stdio.h
#包含stdlib.h
#定义CF "%d\t "
typedef int数据类型;
typedef结构节点{
数据类型数据;
结构节点* next
}节点;
Node *mer(node *la,node *lb)/*合并表*/
{
node *t1,*t2,*lrc,* lnew = NULL
if (la-data=lb-data)
{
lnew = la
la = la-next;
lb=lb-data==lnew-data?lb-下一个:lb;
}
其他
{
lnew = lb
lb = lb-next;
}
lrc = lnew
while (lalb)
{
if (la-data =lb-data ) {
lnew-next = la;
t1 = la = la-next;
t2=lb=lb-data==lnew-next-data?lb-下一个:lb;
}
其他
{
lnew-next = lb;
T2 = lb = lb-next;
t1=la=la-data==lnew-next-data?la-下一个:la;
}
lnew = lnew-next;
la = t1
lb = t2
}
lnew-next=la?la:lb;
返回lrc
}
Void prt(节点*a)/*输出表*/
{
node * t = a;
while (t)
{
printf(CF,t-data);
t = t-next;
}
}
Node * init (datatype * data,int len)/*初始化表*/
{
node * rt = malloc(sizeof(node));
node * rc = rt
int I;
Rt-data=data数据结构练习~c语言描述 1“1“ab中的内容按升序排列”体现在输入中,比如A: 12345,就不用麻烦写成54321了,还是要排序;⑴.因为是升序,所以用指针遍历A和B链表,每次给C加一个较小的值。注意反复筛选。在末尾插入或遍历C表时可以判断更多。(2)优先考虑表A,每次移动表A的指针,都要遍历表B到它的表尾或者(A-data B-data),也就是此时B的值已经大于A了。最后,main函数提供了输入表A和B的提示,有三个printf。
下面是我写的一个类似的代码,忘了标题是什么了,好像是(1)。
#包含stdio.h
#包含malloc.h
/*链表节点定义*/
typedef结构节点
{
int数据;
结构节点* next
}节点;
节点*head1,*head2,* Head;
/*链表节点创建*/
无效启动l(节点**h)
{
*h =(节点*)malloc(sizeof(节点));
(* h)-next = NULL;
}
/*生成基本表1,2*/
void create_list(node *h,int i)
{
int n = 0;
node *p,* q = h;
for(;n I;n)
{
initiate sl(p);
q-next = p;
scanf("%d ",q-next-data);
q = q-next;
}
}
/*链表合成*/
无效合并(节点*H,节点*h1,节点*h2)
{
node *p = hnext,*q = h2-next,*r = H,* s = H;
for(;p!= NULL q!= NULLr = r-next)
{
initiate sl(r-next);
中频(p数据q数据)
{
r-next-data = p-data;
p = p-next;
}
否则if(p数据q数据)
{
r-next-data = q-data;
q = q-next;
}
其他
{
r-next-data = p-data;
p = p-next;
q = q-next;
}
}
if(p == NULL)
for(;q!= NULLq = q-next,r = r-next)
{
initiate sl(r-next);
r-next-data = q-data;
}
其他
for(;p!= NULLp = p-next,r = r-next)
{
initiate sl(r-next);
r数据= p数据;
}
}
/*主要功能和交互界面*/
int main(void)
{
int a,b;
node *s,* S = head1
initiate sl(head 1);/*创建三个头节点*/
initiate sl(head 2);
initiatesl(头);
printf("请输入两个列表的长度。(a,b)\ n ");/*输入给定长度的样式*/
scanf("%d,%d ",a,b);
printf("输入列表一:");/*创建链表1,2*/
create_list(head1,a);
printf("输入列表二:");
create_list(head2,b);
merge(Head,head1,Head 2);
s = Head-next;
printf(" L:");
for(;s!= NULLs = s-next)
printf("%d ",s-data);
printf(" \ n ");
返回0;
}
数据结构c语言版唐王国军习题3 谈谈如何学习数据结构:1。如果没学过C语言,或者C语言学的不好,就把数据结构当数学书学,都是些简单的图论。你脑子里的主线不能丢:线性结构,树形结构,图形结构。当你不再考虑复杂的编程,而只是研究离散点之间的关系时,似乎数据结构就不会那么难了。2.学完抽象的离散点关系,巩固你的C语言水平。书中所有的描述都是C类的。所以,通过学习简单的C定义、判断、循环句,基本就能理解课本上所有的程序。3.做完以上,从数据结构的线性表开始。看来线性表中的顺序表是为你学习C语言而设计的,学好线性表的链表是你入门的关键。链式结构对于树结构、图结构、排序和搜索都是必不可少的,而这往往是最难的。4.看节目的时候一定要自己在纸上画画。你最好先学会画程序的流程图,这样也许你能更快的学会程序。5.数据结构是编程中最基础最有用的地方。学了之后会受益匪浅。也许这本书可以决定你未来的道路或者命运。祝你成功!
最后更新于 2023-10-08 15:30:48 并被添加「」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章