菜鸟请教,关于链表插入。
											 程序代码:
程序代码:
root@~ #cat ins.c
#include <stdio.h>
//定义链表
struct entry {
        int val;
        struct entry *next;
};
int main (void) {
        int pos,num;                               //pos=结点,num=值
        struct entry n1,n2,n3,n4,n0;               //定义结构变量
        struct entry *head=&n1;                     //定义表头
        int Insert (struct entry *head,int pos,int num);  //声明函数insert
//初始化各个结点
        n1.val=111;
        n1.next=&n2;
        n2.val=222;
        n2.next=&n3;
        n3.val=333;
        n3.next=&n4;
        n4.val=444;
//定义表尾
        n4.next=(struct entry *)0;
        printf("Enter position and value:\n");
        scanf("%i%i",&pos,&num);
//如果结点在允许范围之内则打印链表,否则退出。
        if(Insert(head,pos,num)==-1) {
                printf ("Insert Failue!\n");
                return 1;
        }else{
                printf("\nAfter Insert...\n");
                while(head) {
                        printf("%i\n",head->val);
                        head=head->next;
                }
        }
        return 0;
}
//函数insert,问题就在这里,如果不写成函数,结果正确,如果写出函数, 错误就来啦。
int Insert (struct entry *head,int pos,int num) {
        int i=0;
        struct entry n0;
        while(head&&i<pos-1) {
                head=head->next;
                i++;
        }
        if(!head||i>pos-1) return -1;
        n0.val=num;
        n0.next=head->next;
        head->next=&n0;
}
root@~ #错误信息
 程序代码:
程序代码:root@~ #/ins bash: /ins: No such file or directory root@~ #./ins Enter position and value: 1 999 //结点1后插入999 After Insert... 111 4202594 999 120552 Segmentation fault (core dumped) root@~ #

 
											






 
	    



