数据结构.单链表的创建

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 //malloch函数头文件

#include //getch函数头文件

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()起到暂停作用以看程序输出结果}三,实验结果

相关文档
最新文档