在void Create_link()函数中,输入若干值,建立无头节点的单链表函数 ,建立链表
时间: 2024-05-10 22:21:26 浏览: 55
的过程如下:
```
void Create_link(){
int value;
Node *p, *q;
p = NULL;
while(1){
scanf("%d", &value);
if(value == -1) break; //输入-1结束输入
q = (Node*)malloc(sizeof(Node)); //动态分配内存
q->data = value;
q->next = NULL;
if(p == NULL){ //第一个节点
p = q;
}
else{ //其他节点
Node *temp = p;
while(temp->next != NULL){ //找到最后一个节点
temp = temp->next;
}
temp->next = q; //将新节点连接到最后一个节点后面
}
}
head = p; //将链表头指针指向第一个节点
}
```
该函数使用了一个指针变量p来保存链表的头节点,初始值为NULL,表示当前链表为空。然后使用一个while循环,不断读入输入的值,直到输入-1为止。每次读入一个值后,使用malloc函数动态分配一个新节点,并将该节点的data字段设置为读入的值,next字段设置为NULL。接着,分两种情况进行处理:
- 如果p为NULL,说明当前链表为空,将p指向新节点,成为链表的第一个节点。
- 如果p不为NULL,说明当前链表已经有节点,需要将新节点接到链表的末尾。此时需要使用一个临时指针变量temp来遍历整个链表,找到最后一个节点,然后将新节点连接到最后一个节点的next字段上。
最后,将head指针指向第一个节点,表示链表的头部。
阅读全文