一个线性表有n个元素(n<MAXSIZE, MAXSIZE指线性表的最大长度),且递增有序。现有一元素x要插入到线性表的适当位置上,并保持线性表原有的顺序不变。设计程序实现。要求:采用顺序存储表示实现;采用链式存储表示方法实现;比较两种方法的优劣。
链式比较简单,找到插入位置,将新节点插入链表即可
顺序表复杂一些,需要将插入位置之后的所有元素向后移动一位,然后在插入位置写入新数据,同时将顺序表长度值加1才行
//顺序表的插入函数
int Insert(Seqlist *s,int n)
{
if(s==NULL)
return -1;
for(int i=0;i<s->len;i++)
{
if(s->data[i] < n)
{
for(int j=s->len;j>i;j--)
s->data[j] = s->data[j-1];
s->data[i] = n;
s->len++;
return i;
}
}
s->data[s->len++] = n;
return s->len-1;
}
//链表的插入函数
int Insert(LNode *head,int n)
{
if(head == NULL)
return -1;
LNode *p = (LNode*)malloc(sizeof(Node));
p->data = n;
p->next = NULL;
LNode *q = head;
while(q->next != NULL)
{
if(q->next->data < n)
{
p->next = q->next;
q->next = p;
return 1;
}
q = q->next;
}
q->next = p;
return 1;
}