回 帖 发 新 帖 刷新版面

主题:求一道数据结构的答案(c语言版)

1.随机产生或键盘输入一组元素,建立一个带头结点的单向链表(无序)。
2.把单向链表中元素逆置(不允许申请新的结点空间)。
3.在单向链表中删除所有偶数元素结点。
[em43][em43][em43]
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define TRUE 1
#define FALSE 0
//单向链表类型定义
typedef int ElemType;
typedef struct LNode{
 ElemType data;
 struct LNode *next;
}LNode,*LinkList;

[color=FF0000]各位大哥大姐高手高人门~~跪求跪求啊~~~~[/color]

回复列表 (共2个回复)

沙发


#include <stdlib.h>
#include <stdio.h>
typedef struct node 
{
    int data;
    struct node *next;
}linknode;
typedef linknode *linklist;

/*1.随机产生或键盘输入一组元素,建立一个带头结点的单向链表(无序)。*/
linklist creat()
{
    int x;
    linklist head,r,s;
    printf("please input some intengers\n");
    head=r=(linklist)malloc(sizeof(linknode));
    scanf("%d",&x);
    while (x)
    {
        s=(linklist)malloc(sizeof(linknode));
        s->data=x;
        r->next=s;
        r=s;
       scanf("%d",&x);
    }
    r->next=NULL;
    return head;
}

/*输出带头结点的单链表*/
void print(linklist head)
{
    linklist p;
    p=head->next;
    printf("List is:\n");
    while(p)
    {
        printf("%5d",p->data);
        p=p->next;
    }
    printf("\n");

}
/*2.把单向链表中元素逆置(不允许申请新的结点空间)。*/
linklist verge(linklist head)
{
    linklist p,pre,s;
    p=head->next;
    s=head;
    head->next=NULL;
     while(p)
    {
        pre=p;
        p=p->next;
        pre->next=s->next;
        s->next=pre;

    }
    return head;
}
/*3.在单向链表中删除所有偶数元素结点。*/
linklist delete_oushu(linklist head)
{
    linklist p,pre;
    pre=head;
    p=head->next;
    while(p)
    {
        if(p->data%2==0)
                pre->next=p->next;
        pre=p;
        p=p->next;

    }

}
main(void)
{
    linklist head;
    head=creat();
    print(head);

    verge(head);
    print(head);

    delete_oushu(head);
    print(head);
    getch();

}
我用的是win_tc编的,不知道和楼主的意思,呵呵

板凳


[em4][em4][em4]万分感谢啊~~~~

我来回复

您尚未登录,请登录后再回复。点此登录或注册