刚开始学习c,想要完成一个向链表插入新元素的函数但老是遇到问题。实在不知道为啥执行不了只能向大家请教了。
#include <stdio.h>
#include<stdlib.h>
#include <string.h>
typedef struct users{
int indicator;
int numoffriend;
char name[50];
char relation[50][100];
struct users* next;
}users;
struct users* headpointerglobal;
struct users* pointerglobal;
void insert(char name[50], int* numofuser,struct users** headpointerglobal){
struct users* cur_node;
struct users* pre_node;
struct users* new_node;
int result;
int volume = sizeof(struct users*);
new_node = (struct users*)malloc(volume);
strcpy(new_node->name,name);
if(*headpointerglobal == NULL){
*headpointerglobal = new_node;
printf("%p\n",&new_node);
printf("%p\n",new_node);
printf("1");
new_node->next = NULL;
printf("1");
*numofuser++;
new_node->indicator = 1;
printf("%d\n",*numofuser);
printf("%s\n",new_node->name);
}
else{
printf("1");
cur_node = *headpointerglobal;
pre_node = NULL;
int i =0;
while(cur_node != NULL && strcmp(name,cur_node->name)<0 && i <*numofuser){
printf("here");
pre_node = cur_node;
cur_node = cur_node->next;
i++;
}
new_node->next = cur_node;
if(pre_node == NULL){
*headpointerglobal = new_node;
}
else{
pre_node->next = new_node;
}
*numofuser++;
}
}
void main(){
char username[50];
int volume = sizeof(struct users*);
int choice;
int numberofuser = 0;
int clock;
struct users* pointer;
pointer->next = NULL;
printf("1");
while(clock<5){
clock++;
printf("enter choice\n");
scanf("%d",&choice);
if(choice == 1){
printf("enter username\n");
scanf("%s",username);
insert(username,&numberofuser,&headpointerglobal);
}
else{
if(choice ==2){
break;
}
}
}
}
现在遇到的问题就是当程序执行到new_node->next = NULL;这一行就不执行了但也不报错就直接退出程序了有没有懂的朋友帮忙看看是什么问题以及编程的思路有没有错,谢谢大家。