C语言版数据结构

Python014

C语言版数据结构,第1张

你好,这是关于单链表的典型题哦,不难的,下面是答案,加油!

linklist insert(linklist H,int x)

{

p=H

while(p->next!=null&&x>p->next->data)

p=p->next

s=(Hnode*)malloc(sizeof(Hnode))

s->data=x

s->next=p->next

p->next=s

return(H)

}

谈谈如何学习数据结构

1.如果你没有学过C语言,或者C语言学的不好的时候把数据结构当成一本数学书来学,它所讲述的都是一些简单的图论。在你的大脑中的主线不能丢失:线性结构,树结构和图结构。当你不再考虑复杂的程序设计时,仅仅研究个个离散点之间的关系,似乎数据结构也就不会那么难了。

2.学习好了抽象的离散点关系后,再巩固一下你的C语言水平,书中描述的都是类C。因此你只要学习简单的C定义、判断、循环语句就基本能看的懂课本中所有程序了。

3.以上都完成后,从数据结构的线性表开始。线性表中顺序表似乎是为你学习C语言设计的,学好线性表的链表是你起步的关键。后面的树结构,图结构,排序,查找都少不了链式结构,往往这个也是最难的。

4.看程序的时候一定要自己在纸上画画,最好先学会画程序的流程图,也许那样你学程序也就会更快一些。

5.数据结构是程序设计的最基本也是最有用的地方,学完之后你会受益匪浅的,也许这本书可以决定你以后的道路或者命运。

祝你成功!

修改后:

#include <stdio.h>

#include <malloc.h>

typedef struct DuLNode{

int data

DuLNode *prior

DuLNode *next

}DuLNode,*DuLinkList

void Init(DuLinkList L,int n)

{

DuLNode *p

int i

p=(DuLinkList)malloc(sizeof(DuLNode))

printf("输入最后一个结点值:")

scanf("%d",&p->data)

p->next=L->next

L->next=p

p->prior=L

for (i=1i<n++i)

{

p=(DuLinkList)malloc(sizeof(DuLNode))

printf("逆序输入剩余结点值:")

scanf("%d",&p->data)

L->next->prior=p

p->next=L->next

L->next = p

p->prior=L

}

}

void main()

{

DuLinkList L

L=(DuLinkList)malloc(sizeof(DuLNode))

L->next=NULL

L->prior=NULL

Init(L,5)

}