链表按位序插入"/>
单链表按位序插入
按位序插入(带头结点)
#define NULL 0typedef struct LNode
{int data;struct LNode *next;
}LNode,*LinkList;//在第i个位置插入数据e(带头结点)
bool ListInsert(LinkList &L, int i, int e){if (i<1)return false;LNode *p = L; //指针p指向当前扫描结点,目前指向头结点,是第0个int j = 0; //当前p指向第几个结点while (p!=NULL && j<i-1) //循环指到第i-1个结点{p = p->next;j++;}if(p == NULL) //i值不合法return false;LNode *s = (LNode*)malloc(sizeof(LNode)); //插入的新结点s->data = e;s->next = p->next;p->next = s; //将结点s连到p后return true;}
按位序插入(无头结点)
#define NULL 0typedef struct LNode
{int data;struct LNode *next;
}LNode,*LinkList;//在第i个位置插入数据e(带头结点)
bool ListInsert(LinkList &L, int i, int e){if (i<1)return false;if (i == 1) { //插入第1个结点操作不同LNode* s = (LNode*)malloc(sizeof(LNode));s->data = e;s->next = L;L = s;return true;}//下面和带头结点一样操作LNode *p = L; //指针p指向当前扫描结点,目前指向头结点,是第0个int j = 0; //当前p指向第几个结点while (p!=NULL && j<i-1) //循环指到第i-1个结点{p = p->next;j++;}if(p == NULL) //i值不合法return false;LNode *s = (LNode*)malloc(sizeof(LNode)); //插入的新结点s->data = e;s->next = p->next;p->next = s; //将结点s连到p后return true;
}
不带头结点写代码不方便,推荐带头结点
更多推荐
单链表按位序插入
发布评论