一个简单的VC程序,谁会?.编写一个程
由于要在函数中改变实参的值,以下函数的参数略有改变,声明了引用类型:
void create(Node *h); //楼主的声明
void create(Node *&h , int maxno); //修改后的声明
void del(Node *h,int i); //楼主的声明
void del(Node *&h,int i); //修改后的声明
另外,对于create()还增加了一个参数:maxno,作用是指定链表节点的no成员的值。 指定一个maxno后,创建出来的链表包含0~maxno之间所有整数的节点(max>=0,否则会创建空链表)。
由于没有装vc,以下程序在tc++3,...全部
由于要在函数中改变实参的值,以下函数的参数略有改变,声明了引用类型:
void create(Node *h); //楼主的声明
void create(Node *&h , int maxno); //修改后的声明
void del(Node *h,int i); //楼主的声明
void del(Node *&h,int i); //修改后的声明
另外,对于create()还增加了一个参数:maxno,作用是指定链表节点的no成员的值。
指定一个maxno后,创建出来的链表包含0~maxno之间所有整数的节点(max>=0,否则会创建空链表)。
由于没有装vc,以下程序在tc++3,0下调试通过:
//list。
cpp
#include
#include
typedef struct node
{
int no;
struct node *next;
} Node;
void create(Node *&h , int maxno); //建立不带头节点的单链表h,参数有所改动
int len(Node *h); //返回不带头节点的单链表h的长度
void del(Node *&h,int i); //删除不带头节点的单链表h的第i个节点(i从0起计算),参数有所改动
void disp(Node *h); //输出不带头节点的单链表h的所有节点值
void main()
{
Node *head;
int i;
create(head,3);
count >i;
del(head,i);
disp(head);
}
void create(Node *&h , int maxno)
{
Node *p;
int i;
if (maxno >= 0) //创建第一个节点
{
p = (Node *)malloc(sizeof(Node));
p->no = 0;
h = p;
}
else
{
h = NULL; //参数表中声明h为Node指针的引用类型,所以可以通过形参改变实参的值
return ;
}
for(i=1 ; inext = (Node *)malloc(sizeof(Node));
p->next->no = i;
p = p->next;
}
p->next = NULL;
}
int len(Node *h)
{
int lencount = 0;
while(h)
{
lencount++;
h = h->next; //参数表中h没有被声明为引用类型,改变h的值不会改变实参的值
}
return lencount;
}
void del(Node *&h,int i)
{
int j;
Node *p , *q;
if (inext; //h是引用类型,改变它的值可以改变实参的值
free(p);
return ;
}
for(j=1,p=h ; jnext;
}
if (p!=NULL)
{
q->next = p->next;
free(p);
}
}
void disp(Node *h)
{
while(h!=NULL)
{
cout no;
h = h->next;
}
}
。收起