关于数据结构(C语言)的几道题~在线等

来源:百度知道 编辑:UC知道 时间:2024/05/31 07:50:16
1.怎样在递增有序线性表L={12.13.21.24.28.30.42}中插入数据元素26的程序。
2.编写在带头节点的单链表中删除(一个)最小值结点的(高效)算法
3.设有一个带头点的单向链表L={12.13.21.24.28.30.42},数据项递增有序,写一个算法,重新排列链表,使数据递减有序.

忘那位高手指点一下以上3道题的思路,小弟感谢不尽!在线等
忘详细点!我是新手

(只是思路,语法不严格)
1.插入排序
int m,i,data=26,len=8;
for(i=0;i<=len-1;i++){
if(data>L[i])
break;
}
for(m=len;m>i+1;m--)
L[m]=L[m-1];
L[i+1]=data;
2.
p=head;
int i,min_data;
Node *near_p;
min_data=p->data;
for(i=1;i<=len;i++)
if(min_data>p->next->data){
min_data=p->next->data;
near_p=p;//near_p为最小值结点的前趋结点地址
}
//最后,near_p为最小值结点的前趋结点的地址
near_p->next=near_p->next->next;
delete near_p->next;
3.暂时只想出一种办法:
遍历链表,在遍历过程中,将每个结点的next值保存到一个指针数组中,然后再将每个结点的next值赋值为指针数组倒序的值,原第二结点next值为head,最后将head指向原最后一个结点,

我把这三个小题合到一起写了
关于算法看一下每个函数
简单的
第一题我是先把26插到链表最后
再用一个”正序排列”函数,排列一下
数据递减有序用的是”逆序函数”(其实就是正序里面把>号改成<号就好了,

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
typedef int ElemType;

typedef struct LNode {
ElemType date;
str