Beispiel #1
0
/**
 * 算法2.20,在带头结点的单链线性表L的第i个元素之前插入元素e
 */
Status ListInsert(LinkList &L, int i, ElemType e)
{
	Link h, s;
	if (!LocatePos(L, i-1, h))
		return ERROR;
	if (!MakeNode(s, e))
		return ERROR;
	if (h == L.tail) 
		L.tail = s;   // 修改尾指针
	InsFirst(h, s);       //对于从第不个结点开始的链表,第i-1个结点是它的头结点
	L.len++;
	return OK;
}
Beispiel #2
0
Status LinkListInsert(LinkList *linklist, int position, ElemType e) {
	Link *t;									//只能插入到[0,len)之间的位置,不会改变尾结点
	Link *newnode;
	if (!linklist)
		return ERROR;
	if (position != 0) {
		if (LocatePos(*linklist, position - 1, &t) == ERROR)return ERROR;
	}
	else {
		t = linklist->head;
	}
	if (MakeNode(&newnode, e) == ERROR)return ERROR;
	if (InsFirst(t, newnode) == ERROR)return ERROR;
	linklist->len++;
	return OK;
}
Beispiel #3
0
int main()
{
    LinkList L;
    InitList(&L);
    Link test=NULL;
    ElemType array[10] = {10,9,8,7,6,5,4,3,2,1};
    /*ElemType array[10] = {0,9,8,7,6,5,4,3,2,1};*/

    CreateListByArray(array,sizeof(array)/sizeof(ElemType),&L,&InsFirst);
    printf("Length= %d\n",ListLength(L));
    LocatePos(L,9,&test);
    printf("第9个节点数据为%d\n",test->data) ;
    printf("%s\n","------------------------------------") ;
    ListTraverse(L,&Myvist);
    DestroyList(&L);
    return 0;
}