链串,2个串合成一个串时候的操作疑问........相信是大家共同的问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 11:04:46
typedef struct node
{
struct node *next;
}LiString;
void concat(LiString *s1,LiString *s2,LiString *&s)
{
node *p,*q,*r; //1.为什么要声明为node结构体?而不是LiString类型?
s=(LiString *)malloc(sizeof(LiString));
//2.s分配好内存之后,与未分配内存的时候有什么区别?
s->next=null;
r=s; //3.s已经分配好了内存,而r没有,并且s是LiString类型指针,而r是结构体指针,怎么能赋值?
while(p!=null)
{
q=(LiString *)malloc(sizeof(LiString));
q->data=p->data;
r->next=q;
r=q; //4.r=q,是怎么样的? p=p->next;
}
----------------------------------------------------------------------------------------------------
望各位JJMM不理赐教!

LiString类型 只有一个指向
而2个串以上的连接需要2个以上指针
node里面只有一个
当然不行
只有配好内存之后才能进行串的操作
未分配内存相当与没有地方来东西

typedef struct node
{
struct node *next;
}LiString;
这句把node结构用类型LiString定义了
所以struct node与LiString等价
分配了内存,实际内存中就有了一块实体的空间