主题:求一道数据结构的答案(c语言版)
zrananan [专家分:0] 发布于 2008-10-04 11:12:00
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]
最后更新于:2008-10-04 12:34:00
回复列表 (共2个回复)
沙发
佳人佳仁 [专家分:30] 发布于 2008-10-04 12:37:00
#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编的,不知道和楼主的意思,呵呵
板凳
zrananan [专家分:0] 发布于 2008-10-04 14:22:00
[em4][em4][em4]万分感谢啊~~~~
我来回复