耐碳青霉烯类肺克:c语言编程问题 链表

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/30 17:17:05
填空:

1。下面函数将指针p2所指向的线性链表,链接到p1所指向的链表的末端,假定p1所指向的链表非空。
#define NULL 0
struct link
{float a;
struct link*next;
};
concatenate(p1,p2)
struct list*p1,*p2;
{if(p1->next==NULL)
p1-<next=p2;
else
concatenate(_______________,p2);
}

2。以下函数create用来建立一个带头结点的单向链表。新产生的结点总是插入在链表的末尾。单向链表的头指针作为函数值返回。
#include<stdio.h>
struct list
{char data;
struct list*next;
};
struct list*create()
{struct list*h,*p,*q;
char ch;
h=_____(1)______malloc(sizeof(struct list));
p=q=h;
ch=getchar();
while(ch!='\n')
{p=_____(2)________malloc(sizeof(struct list));
p->data=ch;
q->next=p;
q=p;
ch=getchar();
}
p->next='0';
______(3)___________
}

都是填空题,总之多谢各位高手,很急啊

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。
每个结点包括两个部分:
1、存储数据元素的数据域;
2、存储下一个结点地址的指针域。

在C语言中,链表的构建是通过结构体实现的,一个结构体变量,形成一个链表的节点。
在结构体内,需要由至少一个类型为结构体本身类型的指针的元素,作为指针域存在,用来指向下一个或者上一个(仅用于双向链表)元素节点。

1.concatenate(p1->next,p2);
2.
(1)h=(struct list*)malloc(sizeof(struct list));

(2)p=(struct list*)malloc(sizeof(struct list));

(3)return p;