C语言链表的插入

#include
#include
#define  OK   1
#define  ERROR   -1
typedef  int  Status ;
typedef  int  ElemType ; 
typedef  struct  Lnode{   
    ElemType  data;     /*数据域,保存结点的值 */
    struct   Lnode  *next;      /*指针域*/
} LNode;        /*结点的类型 */

void  Insert_LNode(LNode *L,int i,ElemType e)
    /*  在以L为头结点的单链表的第i个位置插入值为e的结点 */ 
{   
	// 序号为i,索引需要i-1.
    int  j=0;  LNode *p,*q;
    p=L->next ;
    // 根据索引来执行循环次数
    while  ( p!=NULL&& j<i-1) {  
        p=p->next;  j++;   
    }
    if  (j!=i-1)     
        printf("i太大或i为0!!\n");
    // 当索引找到了 
    else{  
    	// 开辟一个新的空间
        q=(LNode *)malloc(sizeof(LNode));
        // 将数据存入,将前一个元素的next保存,而前一个元素的next指向插入元素
        q->data=e;   q->next=p->next;
        p->next=q;
    }
    // return L;
}

你可能感兴趣的:(数据结构,数据结构)