数据结构单链表

要对单链表进行插入,删除以及合并操作,写代码的时候除了这三个函数以外还要写什么?要不要先初始化单链表?主函数要怎么写?

单链表是一个动态存储结构,建立单链表需要动态分配存储空间,依次建立各节点。我想你说的初始化单链表应该是对各个节点的数据域赋初值吧。可以用自定义函数CreateList_L()完成。在主函数main()中可以先调用CreateList_L()建立两个单链表,如La和Lb,然后进行合并操作,比如可以调用函数MergeList_L()。

我在下面复制一下CreateList_L()函数的实现吧,在主函数中可以调用这个函数。该函数循环建立结点,并插入到表头,也就是逆序的。

void CreateList_L(LinkList &L,int n)//逆位序输入n个元素的值,建立带表头结点的单链线性表L

int i;
LNode * p;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;//先建立一个带头结点的单链表

for(i=n;i>0;--i)

p=(LinkList)malloc(sizeof(LNode));//生成新结点
printf("请输入第%d个结点的数据:\n",i);
scanf("%d",&p->data);//输入元素值

p->next=L->next;
L->next=p;//插入到表头
}
}

追问

也就是说自定义CreateList_L()函数之后就可以定义删除,插入,合并函数以及主函数吗?这样整个程序就是完整可以运行的?

追答

一个程序首先要有主函数,也就是main()函数。主函数是程序的入口,可以调用其它函数,比如删除、插入、合并函数。
比如主函数先调用了CreateList_L()函数建立两个单链表La和Lb,接下来可以再调用删除、插入、合并函数。最后可以输出合并的结果,这样函数就是完整的了。只要程序正确,就是可以运行的。
再复制一些关于主函数的知识吧。
一般而言,编写一个能运行在操作系统上的程序,都需要一个主函数。主函数意味着建立一个独立进程,且该进程成为了程序的入口,对其它各函数、方法进行调用,这样整个程序的运行轨迹就像一种栈,有时我们称之为调用栈。主函数既是程序的入口,又是程序的出口,通常我们还可以指定一个返回值再退出,以表明程序最后的结果是什么样的。
由于主函数肩负着入口和出口的重任,所以最好不要把太多的细节方面的逻辑直接放在主函数内,这样不利于维护和扩展。主函数应该尽量简洁,具体的实现细节应该封装到被调用的子函数里面去。
希望你能明白,如果还有问题可以再问我。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-01-25

链表:一种计算机数据结构

相似回答