注册 登录
编程论坛 数据结构与算法

基于线性表的动态顺序存储结构,

h2363752280 发布于 2012-12-19 16:26, 851 次点击
基于线性表的动态顺序存储结构,通过函数分别实现以下操作的算法。
实现要求:定义实现以下操作的函数
⑴ 顺序表的建立:通过键盘输入所建立的顺序表的元素个数n,通过随机生成的方式生成在[100,100000]之间的整数。
⑵ 输出顺序表的所有元素。
⑶ 求出顺序表中值最小和次小的元素值,要求该算法的时间复杂度为O(n),最小和次小的元素值通过指针变量带回,函数不需要返回值。
⑷ 删除顺序表中值在S与T之间(S和T的大小关系任意)的所有元素,要求该算法的时间复杂度为O(n),若S和T不合理或顺序表位空则显示错误信息。
⑸ 删除顺序表中所有值重复的所有元素,使得顺序表中的所有元素两两互不相同,要求该算法的时间复杂度为O(n2),然后调用函数输出处理之后的顺序表的所有元素。
⑹ 顺序表的排序,要求该算法的时间复杂度为O(n㏒2n),然后调用函数输出处理之后的顺序表.
⑺ 设计一个菜单,上述操作要求都作为菜单中的主要菜单项。
第1问做出来怪怪的,请高手指点
void creat1(int *p,int n)  //随机生成
{ int temp,i;   //定义两个整型变量
 
   for(i=0;i<n;i++)          //用随机函数生成一个顺序表
     {    temp=(int)rand()%MAX+100;  p[i]=temp;}
     
}
线性表的动态顺序存储结构是指动态数组吗,如果是的话我做错了,求指导
7 回复
#2
crystall2012-12-19 18:24
回复 楼主 h2363752280
⑴ 顺序表的建立:通过键盘输入所建立的顺序表的元素个数n,通过随机生成的方式生成在[100,100000]之间的整数。
这里的元素个数不确定,因此是动态的。

动态申请空间
c语言中: 用 malloc申请空间
           free释放空间
#3
h23637522802012-12-19 22:18
应该怎样建立尼,求高手帮忙
#4
crystall2012-12-20 09:58
程序代码:
#include <stdlib.h>
#include <time.h>


#define NUM_MAX     100000     //上限
#define NUM_MIM     100        //下限

int main(int argc, char* argv[])
{
    //保存元素的个数
    unsigned int nNum = 0;

    //循环变量
    unsigned int i = 0;

    printf("请输入一个数: ");
    scanf("%d", &nNum);

    //动态申请空间
    int *pNewSpace = (int*)malloc(sizeof(int)*nNum);
    if(pNewSpace == NULL)
    {
        printf("动态申请空间失败.\r\n");
    }
   
    //初始化随机种子
    srand((unsigned)time(NULL));

    //随机数
    for(i = 0; i < nNum; i++)
    {
        pNewSpace[i] = rand()%NUM_MAX + NUM_MIM;
        printf("pNewSpace[%d] = %d\r\n", i, pNewSpace[i]);
    }

    //释放空间
    if(pNewSpace != NULL)
    {
        free(pNewSpace);
    }

    return 0;
}
#5
h23637522802012-12-20 16:31
int *pNewSpace = (int*)malloc(sizeof(int)*nNum);
这句有错误运行不了
前面少了一个定义int *pNewSpace ,不过还是非常感谢这位大哥
由于对指针不是很会用,把这7个问题用静态数组做了,老师说不行,让我从做,求高手帮忙做做,近来考试比较多看来没什么时间做了,求帮帮忙
#6
h23637522802012-12-20 17:06
把int *pNewSpace = (int*)malloc(sizeof(int)*nNum);
if(pNewSpace == NULL)
    {
        printf("动态申请空间失败.\r\n");
    }这个放在 这个printf("请输入一个数: ");
    scanf("%d", &nNum);前面就可以了,但是运行的时候有一个不知道什么错误弹出来

#7
h23637522802012-12-21 14:02
求帮忙啊,急急急
#8
crystall2012-12-22 11:57
回复 6楼 h2363752280
你的应该C工程(源码文件的扩展名为.c) C工程必须将变量定义在前面的。
我的是c++工程,就没那问题
1