函数与指针的问题,帮忙解决一下吧,谢谢了!

chenzhen2007 2004-04-01 11:14:19
单链表的初始化和内存释放的问题:
typedef srruct Node
{ DataType data;
struct Node *next;
} SLNode;
void ListInitiate(SLNode **head) //初始化
{
if((*head=(SLNode *)malloc(sizeof(SLNode)))==NULL) exit(1);
(*head)->next=NULL;
}
void Destroy(SLNode **head) //销毁链表,内存释放
{
SLNode *p, *p1;
p=*head;
while(p!=NULL)
{ p1=p;
p=p->next;
free(p1);
}
*head=NULL;
}
请问,在初始化时,申请到的内存中都放了那些,是如何存放的?
为什么在初始化和释放时,参数都要设计成二级指针型?如果是指针型会怎样?
谢谢了!
...全文
54 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
bideyore 2004-04-02
  • 打赏
  • 举报
回复
同意:loadme_litbear(Ursa)
如果不愿意用二级指针,也可以自己定义一个HEAD:
typedef struct SLNode* LinkList;

void ListInitiate(LinkList* llist) //初始化
{
if((llist=(SLNode *)malloc(sizeof(SLNode)))==NULL) exit(1);
(llist)->next=NULL;
}

void Destroy(LinkList* llist) //销毁链表,内存释放
{
SLNode *p, *p1;
p=llist;
while(p!=NULL)
{ p1=p;
p=p->next;
free(p1);
}
llist=NULL;
}
不过我是这样做的:
struct Node{ //main part
DataType info;
PNode link;
};

typedef struct Node* LinkList; //head array

//----------------------------------------------------------------------------------------
LinkList creatNullList_link(void) //creat a null list
{
LinkList llist;
llist=(LinkList)malloc(sizeof(struct Node)); //sign memorry
if(llist!=NULL) //examine whether signed
{
llist->info=0;
llist->link=NULL;
}
return(llist); //if signed,return the head of the linklist
}
这样,你在初始化时可以:
LinkList llist=creatNullList_link();
直接得到一个空链表。:>

langjifengyu 2004-04-02
  • 打赏
  • 举报
回复
眼睛都不敢炸一下
要不就没饭吃了
jack_wq 2004-04-02
  • 打赏
  • 举报
回复
初始化申请空间,内存数据应该是随机的!
w3guy 2004-04-01
  • 打赏
  • 举报
回复
大家回的好快,刚看到没有人回答,贴上去后已经排在第三了。 哈哈
w3guy 2004-04-01
  • 打赏
  • 举报
回复
在初始化时,申请到的内存中放的数据是不可预知的。
在函数中既要要修改指针本身也要修改指针所指的内容,所以必须用二级指针型。
loadme_litbear 2004-04-01
  • 打赏
  • 举报
回复
如果不用二级指针,你就要自己在外面弄一个连标头的实体传进去拉
用二级指针你可以在外面只弄一个指针就好了,不过我倒是喜欢在外面弄一个头出来
zouxueping 2004-04-01
  • 打赏
  • 举报
回复
申请内存时并不初始化,里面的数据是随机的。用二级指针是因为它要改变的是指针本身,如果用一级指针则只能改变它指向的数据而不能改变指针本身。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧