数据结构.单链表的创建
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[数据结构实验题目三] 单链表的创建
14 辽宁大学宋文龙
一、实验内容:
1、建立并输出两个递增单链表La和Lb。
A、首先要定义单链表的数据结构
B、编写一个函数使用“头插法”或“尾插法”创建一个单链表,例如:
LinkList CreateList(LinkList L,int n){
………
}
C、编写主函数(main) ,调用函数CreateList(La,n), CreateList(Lb,n)
分别录入单链表La和Lb,注意手动录入时要保证La和Lb是递增的(如果是头插法,那么录入时要按从大到小录入,如:5 4 3 2 1)
D、编写一个函数能够显示一个单链表中各结点的值,设La和Lb如下:
La:1 3 7 8 15 20
Lb:2 4 8 15 17 24 90
二,实验完整代码:
#include
#include
#include
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList creatlist(LinkList L,int n){
LinkList p,q;
int i;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
p=(LinkList)malloc(sizeof(LNode));
printf("第1个节点值:");
scanf("%d",&(p->data));
p->next=L->next;
L->next=p;
q=p;//插入第一个结点,for语句插入剩余结点
for(i=n-1;i>0;i--){
p=(LinkList)malloc(sizeof(LNode));
printf("第%d个节点值:",n+1-i);
scanf("%d",&(p->data));
p->next=q->next;
q->next=p;
q=p;
}
//使用尾插法,创建一个含有n个结点的带头结点的单链表
//也可以使用头插法来创建L
return L;
//因为链表是动态分配内存,所以创建后头指针需返回,在调用时接收}
void show(LinkList L){
//能够输出带头结点的单链表L中的各个结点的值
LinkList p;
for(p=L->next;p!=NULL;p=p->next){
printf("%d\t",p->data);
}
}
main() {
LinkList La,Lb;//定义两个结点指针
La=creatlist(La,6); //创建带头结点单链表La含6个结点
printf("输出单链表La:\n");
show(La);
printf("\n");
Lb=creatlist(Lb,7);
printf("输出单链表Lb:\n");
show(Lb);
getch();
}//如果环境是Win-Tc,getch()起到暂停作用以看程序输出结果}三,实验结果