作业
1.顺序表排序代码
main.c
Seqlist *la = create_list();
int la_len, lb_len;
datatype e;
printf("please enter la_len:");
scanf("%d", &la_len);
for(int i = 0; i < la_len; i++)
{
printf("please enter rear element:");
scanf("%d", &e);
if(NULL == la || full_list(la) == -1)
break;
insert_rear(e, la);
}
Bubble(la);
printf("输入的顺序表排序结果为:\n");
output(la);
test.c
int Bubble(Seqlist *list)
{
if(NULL == list || list -> len < 2)
{
printf("can not sort\n");
return -1;
}
else
{
int count = 0;
for (int i = 1; i < list -> len; i++)
{
for (int j = 0; j < list -> len - i; j++)
{
if (list -> data[j] > list -> data[j + 1])
{
datatype t = list -> data[j];
list -> data[j] = list -> data[j + 1];
list -> data[j + 1] = t;
count++;
}
}
if (count == 0)
{
break;
}
}
}
return 0;
}
结果
2.链表数据元素修改和查找
代码
main.c
Linklist L = NULL;//定义头指针
//尾插
//主函数中找到尾节点
Linklist rear = L;
if(rear != NULL)
while (rear -> next != NULL)
{
rear = rear -> next;
}
//循环链表到最后一个节点
for (int i = 0; i < n; i++)
{
printf("please enter element:");
scanf("%d", &e);
if(NULL == L)
{
L = rear;
}
rear = insert_rear2(e, rear);
}
int pos;
printf("please enter pos:");
scanf("%d", &pos);
printf("please enter element:");
scanf("%d", &e);
L = update_by_pos(e, pos, L);//修改数据元素
output(L);
printf("please enter pos:");
scanf("%d", &pos);
search_by_pos(pos, L);//查找数据元素
test.c
//修改数据元素
Linklist update_by_pos(datatype e, int pos, Linklist L)
{
if (NULL == L || pos < 1 || pos > output(L) + 1)
{
puts("update error");
}
else
{
Linklist p = L;
for (int i = 1; i < pos; i++)
{
p = p -> next;
}
p -> data = e;
}
return L;
}
//查找数据元素
Linklist search_by_pos(int pos, Linklist L)
{
if (NULL == L || pos < 1 || pos > output(L) + 1)
{
puts("insert error");
}
else
{
Linklist p = L;
for (int i = 1; i < pos; i++)
{
p = p -> next;
}
printf("the pos's element is %d\n", p -> data);
}
return L;
}
结果
思维导图