C语言 C语言中的链表问题 在创建链表的时候,定义创建函数的时候,形参的选取问题

我这里的想问的是,形参表头到底是用struct note *head
还是用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);

}

运行测试:

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-11
你要想通过形参带回来head的数值(表面上是这样),就要用struct note **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 );
}本回答被提问者采纳
第2个回答  2012-03-11
贴下代码吧,看看你是怎么写的
相似回答