(插入有序列表)

时间:2015-01-05 08:11:07

标签: visual-c++ data-structures

我必须写这个程序: 编写一个程序,在链表中按顺序插入0到100之间的25个随机整数。程序应计算元素的总和和元素的浮点平均值。 这是我到目前为止用随机单词填充链表的方法,但它只是重复一个特定的整数。

struct node
{
    int data;
    struct node* next;
};
node *head;
void randomize()
{
	node *newnode;
	//srand(time(NULL));
	for (int i=0;i<25;i++)
	{
		srand(time(NULL));
		newnode=(node *)malloc(sizeof(node));
		srand(time(NULL));
		int random=rand()%100;
		newnode->data=random;
		newnode->next=head;
		head=newnode;

	}
}
void display()
{
	node *record=head;
	while(record!=NULL)
	{
		cout<<(record->data)<<endl;
		record=record->next;
	}
}
int main()
{
	randomize();
	display();
	getch();
}

`&GT;

struct node
{
    int data;
    struct node* next;
};
node *head;
void randomize()
{
    node *newnode;
    newnode=(node *)malloc(sizeof(node));
    srand(time(NULL));
    for (int i=0;i<25;i++)
    {
        srand(time(NULL));
        int random=rand()%100;
        newnode->data=random;
        newnode->next=head;
        head=newnode;

    }
}
void display()
{
    node *record=head;
    while(record!=NULL)
    {
        cout<<(record->data);
        record=record->next;
    }
}
int main()
{
    randomize();
    display();
    getch();
}

2 个答案:

答案 0 :(得分:1)

我可以发现3件事:

  1. 将头部指定为NULL;
    node * head = NULL;
  2. 在for循环中移动内存分配
  3. 使用mod乘以101得到0到0之间的随机数 100

答案 1 :(得分:0)

重复来自代码的randomize()方法。 移动线

newnode = (node*) malloc(sizeof(node));

进入for中的randomize()循环。通过这种方式,您可以创建一个新节点并将其添加到列表中。

您必须考虑重写randomize()才能创建有序列表。例如,您应该迭代当前列表,并为具有随机值的新节点找到合适的位置。您也可以附加对于有序链接列表非常容易的附加,而不是前置。您可以在Google的帮助下轻松找到示例(订购的链接列表)。