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.数据结构是编程中最基础最有用的地方。学了之后会受益匪浅。也许这本书可以决定你未来的道路或者命运。祝你成功!

相关文章

发表新评论