【发布时间】:2019-09-27 07:14:13
【问题描述】:
我是数据结构的初学者,现在正在学习链表。 我遇到了一个关于排序插入的程序,其中我有一个 add() 函数来按排序顺序添加节点
/*Linked List program to add ascending order sorted nodes in
the list */
#include <stdio.h>
#include <stdlib.h>
enter code here
struct node {
int data ;
struct node link;
};
void add(struct node **q,int num){
struct node *r,*temp = *q;
r = malloc(sizeof(struct node )); //Data Allocated
r->data = num;
if(*q==NULL ||(*q)->data >num){
*q = r;
(*q)->link = temp;
}else{
while(temp !=NULL){
if(temp->data <=num &&(temp->link->data >num
||temp->link==NULL)){
r->link = temp->link;
temp->link=r;
return;
}
temp = temp->link;
}
}
}
void main(){
struct node *p;
p = NULL;
}
我希望按升序添加节点,但是当我输入数据时会显示错误。我正在使用代码块在 C 中运行程序
我认为它必须与结束条件 temp->link == null 相关,但我无法确定该部分代码的确切条件。请帮助!
【问题讨论】:
-
'用C'运行程序'——那为什么是C++标签呢?
-
您正在检查
temp !=NULL,但您正在访问temp->link。temp->link可以是NULL在这种情况下你有未定义的行为。 -
另外结构定义错误。也许你想要。
struct node *link;
标签: c linked-list singly-linked-list