代码:
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *next;
};
struct node *head,*temp;
int insert_end(int);
int insert_begin(int);
int display(void);
int delete_end(void);
int delete_begin(void);
int main()
{
head=(struct node *)malloc(sizeof(struct node));
temp=(struct node *)malloc(sizeof(struct node));
head->next = -1;
int choice,a,b;
label:
printf("\n\t1.insert_end 2. insert_begin 3.\n delete_end 4.delete_begin \n5.display 6.exit ");
scanf( "%d",&choice);
switch ( choice )
{
case 1:
{
printf("\tenter the no to be insert at the end ");
scanf("%d",&a);
insert_end (a);
goto label;
}
case 2:
printf("\tenter the no to be insert at the beginnig ");
scanf("%d",&a);
insert_begin (a);
goto label;
case 3:
{
b = delete_end();
if ( b == 0)
{
printf( " \t\tfailed ! ! \n");}
else
{
printf( " \t\t success ! ! \n");}
goto label;
}
case 4:
{
b = delete_begin();
if ( b == 0)
{
printf( " \t\tfailed ! ! \n");}
else
{
printf( " \t\t success ! ! \n");}
goto label;
}
case 5:
{
temp =head ;
display();
goto label;
}
case 6:
{
exit (0);
}
default:
{
printf( "wrong options");
goto label;
}
}
}
int insert_end ( int a )
{
temp = head;
while (1)
{
if (temp->next == -1)
{
temp->data =a;
temp->next =0;
return 0;
}
else if (temp->next == 0)
{
temp->next = malloc(sizeof ( struct node));
temp =temp->next;
temp->data =a;
temp->next =0;
return 0;
}
else
{
temp = temp->next;
}
}
}
int display()
{
temp=head;
while (1)
{
if (head->next == -1)
{
printf( "\tEmpty ! ! !\t\n");
break;
}
else if ((head->next == 0) )
{
printf( " %d ", head->data);
break;
}
else if (temp->next != 0 )
{
printf (" %d ->", temp->data );
temp =temp->next ;
}
else if (temp->next == 0 )
{
printf(" %d ", temp->data);
return 0;
}
}
}
int insert_begin(int a)
{
if(head->next == -1)
{
head->data =a;
head->next=0;
return 1;
}
else
{
temp =malloc(sizeof ( struct node ));
temp->data =a;
temp->next = head;
head = temp;
return 1;
}
}
int delete_end (void)
{
temp=head;
while (1)
{
if (head->next == -1)
{
return 0;
}
else if (head->next == 0)
{
head->next = -1;
return 1;
}
else if (temp->next->next == 0)
{
temp->next =0;
return 1;
}
else
temp=temp->next;
}
}
int delete_begin(void)
{
if ( head->next == -1)
{
return 0;
}
else if ( head -> next == 0)
{
head->next = -1;
return 1;
}
else
{
head=head->next;
return 1;
}
}
error:
linkedlist1.c: In function ‘main’:
linkedlist1.c:19:12: warning: assignment makes pointer from integer without a cast [enabled by default]
head->next = -1;
^
linkedlist1.c: In function ‘insert_end’:
linkedlist1.c:87:16: warning: comparison between pointer and integer [enabled by default]
if (temp->next == -1)
^
linkedlist1.c: In function ‘display’:
linkedlist1.c:115:16: warning: comparison between pointer and integer [enabled by default]
if (head->next == -1)
^
linkedlist1.c: In function ‘insert_begin’:
linkedlist1.c:141:15: warning: comparison between pointer and integer [enabled by default]
if(head->next == -1)
^
linkedlist1.c: In function ‘delete_end’:
linkedlist1.c:162:16: warning: comparison between pointer and integer [enabled by default]
if (head->next == -1)
^
linkedlist1.c:168:12: warning: assignment makes pointer from integer without a cast [enabled by default]
head->next = -1;
^
linkedlist1.c: In function ‘delete_begin’:
linkedlist1.c:184:17: warning: comparison between pointer and integer [enabled by default]
if ( head->next == -1)
^
linkedlist1.c:190:12: warning: assignment makes pointer from integer without a cast [enabled by default]
head->next = -1;
^
当我尝试使用GCC进行编译时,我最终会发出一条警告,说明&#34;赋值使得整数指针没有强制转换[默认启用]请帮我解决上述警告。我不知道错误是什么。
答案 0 :(得分:0)
用你的&#34;警告&#34;你还得到一个字符串号码,其中&#34;警告&#34;出现。 请给出出现错误的字符串
我第一次没有看到你的警告
只需将-1替换为NULL
或将-1替换为(void *)-1
课程标准应写入NULL
,但如果您真的需要,可以写(void *)-1
答案 1 :(得分:0)
语句
不满足编译器head->next = -1;
如果您使用NULL而不是-1并写入
会更好head->next = NULL;