标题:关于单链表的顺序插入与逆序插入,用C语言
取消只看楼主
诠释0x208
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2017-12-22
结帖率:50%
已结贴  问题点数:20 回复次数:3 
关于单链表的顺序插入与逆序插入,用C语言
题目为:随机生成100个整数,范围在1~999之间,如果第一个随机数为偶数,将这100个随机数按生成次序插入到链表中;如果第一个数为奇数,将这100个数逆序插入到链表中,最后输出整个链表。要求编写两个插入函数(分别叫insert_head和insert_tail)
题目给的部分代码:
linkedlist.h
#ifndef _LINKEDLIST_H_
#define _LINKEDLIST_H_

struct Node
{
    int element;
    struct Node *next;
};

#endif
main3.c(部分代码)
#include <stdio.h>
#include <stdlib.h>
#include "linkedlist.h"

void printlist(struct Node *h)
{
    struct Node *p;
    p = h->next;
    while (p != NULL)
    {
        printf("%d ", p->element);
        p = p->next;
    }
    printf("\n");
}

int main()
{
    struct Node *header;
    void (*insert)(struct Node *, int); // insert func pointer

    header = malloc(sizeof(struct Node));
    header->next = NULL;

    /* ---your codes --- */
 
    printlist(header);
}

以及自己写的代码(自己没写出来):
#include <malloc.h>
#include <stdio.h>
#include<stdlib.h>
#include <math.h>

typedef struct node
{
int num;
struct node *next;
}node,*pnode;


/*在链表头进行插入,新节点成为头节点,原头节点成为新节点的下一个节点,头节点指针后伊一位*/
void insert_head(pnode *phead,int data)
{
pnode p;
p=(pnode)malloc(sizeof(sizeof(node)));
if(NULL==p)
{
perror("malloc fail");
exit(1);
}
p->num=data;
p->next=(*phead);
(*phead)=p;
}


/*在链表尾进行插入*/
void insert_tail(pnode *phead,int data)
{
pnode p; // 插入的新结点
pnode p2=(*phead); //链表中的指针初始化,否则会发生段错误
p=(pnode)malloc(sizeof(sizeof(node)));
if(NULL==p)
{
perror("malloc fail");
exit(1);
}
p->next=NULL;
p->num=data;
if(*phead)
{
while(p2->next) //遍历链表,找到鏈表末尾节点
{
p2=p2->next;
}
p2->next=p;
}

}

void printf_list(pnode head)
{


while(head)
{
printf("%d\n",head->num);
head=head->next;
}
printf("\n");
}


void main(void)
{
int a[100];
int i;

srand(time(0));
struct node *head=NULL;


for(i=0;i<2;i++){
    a[i]=rand()%100;
    insert_head(&head,a[i]);
                }

for(i=0;i<2;i++){
    a[i]=rand()%100;
    insert_tail(&head,a[i]);
                    }
      




printf_list(head); //测试打印



}
希望各位大佬指点迷津,最好按题目补充代码。
搜索更多相关主题的帖子: 插入 struct Node int next 
2018-04-26 23:37
诠释0x208
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2017-12-22
得分:0 
是假如生成的第一个随机数为偶数,顺序插入链表,为奇数,逆序插入链表。
2018-04-27 10:40
诠释0x208
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2017-12-22
得分:0 
我用的是这样的方法,一直报错,所以希望大佬帮我写一下主函数。
2018-04-27 12:22
诠释0x208
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2017-12-22
得分:0 
回复 4楼 吹水佬
if(a[0]%2==0) {
    a[i]=rand()%100;
    for(i=0;i<2;i++){
    head=insert_head(&head,a[i]);
                }


    for(i=0;i<2;i++){
   
    head=insert_tail(&head,a[i]);
                    }
      
   
}

截图报错,void value not ignored as it ought to be.
2018-04-27 12:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-486429-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.305473 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved