C语言 C语言中的链表问题 在创建链表的时候,定义创建函数的时候,形参的选取问题
还是用struct note **head
我看大部分的书和网上页码上都用的是struct note *head
我用*head尝试写过程序,验证表头地址失败
改用**head能力有限,
麻烦高手指点..........
希望哪位高手写一个能执行的程序
要有主程序int main(void)
{
}
最好两种都写下,能输出结果的,就是输入数据,能输出结果的
还有就是
还有就是插入和删除结点的时候是不是必须要用二级指针?(对表头有可能修改)
在这里希望能给我写出一个新建链表的程序(两个吧,形参一级和二级)
新建一个链表
非常的感谢,有分加 展开
C程序示例:
#include "stdio.h"
struct node
{
int data;
struct node *next;
};
/* 构造链表,返回头结点指针 */
struct node *CreateLinkList()
{
struct node *head, *p, *q;
int value;
head = (struct node*)malloc(sizeof(struct node));
head->next = NULL;
q = head;
while(1)
{
printf("value (end by -1) : ");
scanf("%d", &value);
if(value == -1)
break;
p = (struct node*)malloc(sizeof(struct node));
p->data = value;
p->next = NULL;
q->next = p;
q = p;
}
return head;
}
/* 遍历链表 */
void ListAllNodes(struct node *head)
{
struct node *p;
for(p=head->next; p!=NULL; p=p->next)
printf("%d\n", p->data);
}
void main()
{
struct node *head;
head = CreateLinkList();
ListAllNodes(head);
}
运行测试:
否则,你需要定义函数的返回类型为struct note * , 用return head;来返回,并在主函数中进行接收。
以下提供两种方法:
struct node {
int data;
struct node *next ;
}
struct node * creat1( void )
{
struct node *head ;
head=malloc( sizeof(struct node) );
...
return head ;
}
void creat2( struct node **head )
{
struct node *p ;
p=malloc( sizeof(struct node) );
*head=p;
....
}
main()
{
struct node *head ;
//方法1
head=creat1() ;
//方法2
creat2( &head );
}