首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于指针做形参,小弟我这样的写法是不是不科学的?

2012-04-12 
关于指针做形参,我这样的写法是不是不科学的????InsBefore()函数中的Link*p这样用好不好,Link本身就是个指

关于指针做形参,我这样的写法是不是不科学的????
InsBefore()函数中的Link   *p这样用好不好,Link本身就是个指向节点的指针,我又用到了一个指向指针的指针Link   *P,但是想要完成函数功能好像只能这样.
有没有更好的方法,

学C的时候没学好,嘿嘿,另外,还请高手给我说说指针如何做形参,最近学习时常用到指针,指到我头也大了,老出错。


#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

#define   TRUE1
#define   FALSE0
#defineOK1
#define   ERROR0
#define   INFEAIBLE-1
#define   OVERFLOW-2
typedef   int   ElemType;
typedef   int   status;

typedef   struct   LNode{
ElemType   data;
struct   LNode   *next;
}*Link;

typedef   struct{
LNode   *head,*tail;
int   len;
}LinkList;


status   MakeNode(Link   *L,ElemType   e)
{
*L=(Link)malloc(sizeof(LNode));
if(!*L)
{
return   ERROR;
}
(*L)-> data=e;
(*L)-> next=NULL;
return   OK;
}//MakeNode     生成一个节点

status   InitList(LinkList   *L)
{
Link   t;
if(MakeNode(&t,0)==ERROR)
{
return   ERROR;
}
L-> tail=L-> head=t;
L-> len=0;
return   OK;
}//InitList   初始化一个LinkList链表,head为头指针


status   InsBefore(LinkList   *L,Link   *p,Link   s)
{
Link   index=L-> head;
while(index-> next!=*p)
{
index=index-> next;
}
s-> next=*p;
index-> next=s;
L-> len++;
*p=s;
return   OK;
}//InsBefor   已知p指向线性链表中的一个节点,将s所指节点插在p所指节点指前
  //并修改p指针指向新插入点


void   main()
{
int   n,i;
LinkList   L;
Link   temp,temp1,index;
ElemType   e;
InitList(&L);
printf( "请输入你要生成的链表长度:\n ");
scanf( "%d ",&n);
while(L.len <n)
{
printf( "\n请输入第%d个节点的data\n ",L.len+1);
scanf( "%d ",&e);
MakeNode(&temp,e);
L.tail-> next=temp;
L.tail=temp;
L.len++;
}
index=L.head-> next;
while(index)
{
L.tail=index;
index=index-> next;
}
index=L.head-> next;
for(i=0;i <3;i++)
{
index=index-> next;     //index指向链表的第四个元素
}
MakeNode(&temp1,111);
InsBefore(&L,&index,temp1);
}


[解决办法]
引用啊
[解决办法]
看样子应该没问题。
引用到是很方便,但是据说不安全,不过俺常用,呵呵,省事啊
[解决办法]
是不是刚学数据结构啊,我也是,头痛
[解决办法]
为什么不安全?????注意点就可以了
[解决办法]
引用比指针好用多了
[解决办法]
把应用当成一个变量的别名,比如你可以叫你爸爸叫作“爸爸”,也可以叫”爹“
[解决办法]
楼主只要想想各种变量的地址,指针的一些问题,就很清晰了!

热点排行