请C语言高手帮我编写几个数据结构的小程序~(一定要用C++编写噢~)谢啦~
第一个
void reverse_merge(List &A,List &B,List &C){
InitList(C);
i=j=1; k=0;
la_len=ListLength(A);
lb_len=ListLength(B);
while((i<=la_len)&&(j<=lb_len)){
GetElem(A,i,ai);
GetElem(B,i,bi);
if(ai<=bj){
ListInsert(C,++k,ai); ++i;}
else ListInsert(C,++k,bj); ++j;}
}
while(i<=la_len){
GetElem(A,i++,ai); ListInsert(C,++k,ai);}
while(j<=lb_len){
GetElem(B,j++,bj); ListInsert(C,++k,bj);}
}
第二个的话可以参考http://hi.baidu.com/mianchuang/blog/item/6632a4b383c64959082302b5.html
#include"stdio.h"
#include<malloc.h>
typedef char ElemType;
typedef struct LNode
{ElemType data; struct LNode *next; }LinkList;
void CreatListF(LinkList *&L,ElemType a[],int n) //头插法建表
{
LinkList *s;int i;
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
for(i=0;i<n;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=a[i];
s->next=L->next;
L->next=s;
}
}
void CreateListR(LinkList *&L,ElemType a[],int n)
//尾插法建表
{
LinkList *s,*r;int i;
L=(LinkList *)malloc(sizeof(LinkList));
r=L;
for(i=0;i<n;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}
void InitList(LinkList *&L)
//初始化线性表
{
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
}
void DestroyList(LinkList *&L)
//销毁线性表
{
LinkList *p=L,*q=p->next;
while(q!=NULL)
{
free(p);
p=q;
q=p->next;
}
free(p);
}
int ListEmpty(LinkList *L)
//判断线性表是否为空
{
return(L->next==NULL);
}
int ListLength(LinkList *L)
//求线性表的长度
{
LinkList *p=L;int n=0;
while(p->next!=NULL)
{
n++;p=p->next;
}
return(n);
}
void DispList(LinkList *L)
//输出线性表
{
LinkList *p=L->next;
while(p!=NULL)
{
printf("%c",p->data);
p=p->next;
}
}
int GetElem(LinkList *L,int i,ElemType &e)
//求线性表中某个数据元素值
{
int j=0;
LinkList *p=L;
while(j<i&&p!=NULL)
{
j++;p=p->next;
}
if(p==NULL)
return 0;
else
{
e=p->data;return 1;
}
}
int LocateElem(LinkList *L,ElemType e)
//按元素值查找
{
LinkList *p=L->next;
int i=1;
while(p!=NULL&&p->data!=e)
{
p=p->next;i++;
}
if(p==NULL)return(0);
else return(i);
}
int ListInsert(LinkList *&L,int i,ElemType e)
//插入数据元素
{
int j=0;
LinkList *p=L,*s;
while(j<i-1&&p!=NULL)
{
j++;p=p->next;
}
if(p==NULL)return 0;
else
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=e; s->next=p->next; p->next=s;
return 1;
}
}
int ListDelete(LinkList *&L,int i,ElemType &e) //删除数据元素
{
int j=0;
LinkList *p=L,*q;
while(j<i-1&&p!=NULL)
{
j++;p=p->next;
}
if(p==NULL)
return 0;
else
{
q=p->next;
if(q==NULL)return 0;
e=q->data;
p->next=q->next;
free(q);
return 1;
}
}
int main()
{
ElemType e,a[5]={'a','b','c','d','e'};
LinkList *h;
InitList(h);
//初始化顺序表h
CreateListR(h,&a[0],5);
//依次采用尾插入法插入a,b,c,d,e元素
printf("单链表为:");
DispList(h); printf("\
");
//输出顺序表h
printf("该单链表的长度为:");
printf("%d",ListLength(h)); printf("\
");
//输出顺序表h的长度
if(ListEmpty(h)) printf("该单链表为空。\
");
else printf("该单链表不为空。\
");
//判断顺序表h是否为空
GetElem(h,3,e);printf("该单链表的第3个元素为:");
printf("%c",e); printf("\
");
//输出顺序表h的第3个元素
printf("该单链表中a的位置为:");
printf("%d",LocateElem(h,'a')); printf("\
"); //输出元素'a'的位置
ListInsert(h,4,'f');
//在第4个元素位置插入'f'素
printf("在第4 个元素位置上插入'f'后单链表为:");
DispList(h); printf("\
");
//输出顺序表h
ListDelete(h,3,e);
//删除L的第3个元素
printf("删除第3个元素后单链表为:");
DispList(h); printf("\
");
//输出顺序表h
DestroyList(h);
//释放顺序表h
return 0;
}
#include"malloc.h"
#define MaxSize 10
typedef char ElemType ;
typedef struct
{
ElemType data[MaxSize]; int front,rear;
}SqQueue;
void InitQueue(SqQueue *&q) //初始化队列
{
q=(SqQueue *)malloc(sizeof(SqQueue));
q->front=q->rear=0;
}
void ClearQueue(SqQueue *&q) //销毁队列
{ free(q); }
int QueueEmpty(SqQueue *q) //判断队列是否为空
{ return(q->front==q->rear); }
int enQueue(SqQueue *&q,ElemType e) //入队列
{
if((q->rear+1)%MaxSize==q->front) return 0;
q->rear=(q->rear+1)%MaxSize;
q->data[q->rear]=e; return 1;
}
int deQueue(SqQueue *&q,ElemType &e) //出队列
{
if(q->front==q->rear) return 0;
q->front=(q->front+1)%MaxSize;
e=q->data[q->front]; return 1;
}
void numQueue(SqQueue *q) //输出队列元素个数
{
if(q->rear>=q->front)
printf("这个队列的元素个数为:%d\n",q->rear-q->front);
else
printf("这个队列的元素个数为:%d\n",MaxSize-q->front+q->rear);
}
void DispQueue(SqQueue *q) //输出队列
{
int i=0,f=q->front+1;
while((f+MaxSize)%MaxSize!=q->rear)
{
printf("%c\t",q->data[f]);
f++; i++;
if(i%5==0)printf("\n");
}
printf("%c\n",q->data[f]);
}
void main()
{
SqQueue *q;
ElemType e;
InitQueue(q);
if(QueueEmpty(q))printf("这个队列是空的!\n");
else printf("这个队列不是空的!\n");
enQueue(q,'a'); enQueue(q,'b'); enQueue(q,'c');
if(deQueue(q,e)==1)
printf("出对元素为:%c\n此时",e);
numQueue(q);
enQueue(q,'d'); enQueue(q,'e'); enQueue(q,'f');
printf("def进队列后,");
numQueue(q);
printf("它的元素有:\n");
DispQueue(q);
ClearQueue(q);
}
这是我以前的作业,你自己组织下,应该可以解决你的问题
请C语言高手帮我编写几个数据结构的小程序~(一定要用C++编写噢~)谢啦...
void numQueue(SqQueue *q) \/\/输出队列元素个数 { if(q->rear>=q->front)printf("这个队列的元素个数为:%d\\n",q->rear-q->front);else printf("这个队列的元素个数为:%d\\n",MaxSize-q->front+q->rear);} void DispQueue(SqQueue *q) \/\/输出队列 { int i=0,f=q->front...
谁能帮我把这些数据结构操作用C语言描述出来?谢了
define nmax 50 define M=2 main(){ int i,k,m,n,num[nmax],*p;printf("please input the total of numbers:");scanf("%d",&n);p=num;for(i=0;i<n;i++)(p+i)=i+1;i=0;k=0;m=0;while(m<n-1){ if(*(p+i)!=0) k++;if(k==M+n){ *(p+i)=0;k=0;m++;}...
谁能帮我把这些数据结构操作用C语言描述出来?谢了
include<stdio.h> int n,t;void suan(int n,int x){ int a[40]={0},i;while (n){ a[++a[0]]=n%x;n\/=x;} for (i=a[0];i>=1;i--)printf("%d",a[i]);} int main(){ scanf("%d%d",&n,&t);\/\/n是原数,t是进制 printf("(%d)10=(",n);suan(n,t);printf(...
C语言版数据结构程序设计求大神帮助
\/* 二叉树应用 *\/ #include "stdio.h" #include "stdlib.h" typedef char ElemType; \/* 结点数据的类型 *\/ typedef struct BiTNode{ ElemType data; struct BiTNode *lchild,*rchild; }BiTNode; \/* 树结点类型 *\/ \/*栈的定义及基本操作*\/ #define MaxSize 100 typedef BiTNode* SElemType; ...
c语言的数据结构有哪些
C语言的数据结构主要有:数组、结构体、联合体、枚举类型。1. 数组(Array):数组是一种线性数据结构,用于存储相同类型的元素。在C语言中,数组是一种基本的数据结构,可以用来存储整数、字符、浮点数等多种数据类型。数组的每个元素都可以通过索引进行访问,索引从0开始。数组的大小是固定的,一旦创建...
c语言有哪些数据结构
C语言的数据结构包括:数组、结构体(struct)、联合体(union)、枚举类型(enum)。1. 数组(Array): 数组是一种线性数据结构,用于存储相同类型的元素。在C语言中,数组的大小是固定的,一旦创建不能改变。数组元素可以通过索引进行访问,索引从0开始。数组广泛应用于各种算法和数据操作。2. 结构体(...
c语言常见的数据结构有哪些?
(1)线性数据结构:元素之间一般存在元素之间存在一对一关系,是最常用的一类数据结构,典型的有:数组、栈、队列和线性表 (2)树形结构:结点间具有层次关系,每一层的一个结点能且只能和上一层的一个结点相关,但同时可以和下一层的多个结点相关,称为“一对多”关系,常见类型有:树、堆...
c语言数据结构?
源码 运行结果 源码:include<stdio.h> typedef struct student{ int age;char name[10];int *a ;struct student*next;}stu;int main(){ stu *p,*q;scanf("%s",p->name);scanf("%s",q->name);p->next=q;printf("%s ",p->name);printf("%s",p->next->name);return 0;} ...
谁能帮我把这些数据结构操作用C语言描述出来?谢了
我以下的答案当了C里面也有引用类型 假定对sqqueue结构以及status类型的定义如下:struct sqqueue { int head,tail;int count;qelemtype list[1000];\/\/qelemtype类型表示队列元素类型,必须事先按照程序的具体需要定义好 };enum status { succeed,fail };用于进行队列操作的各函数如下:status initqueue(...
用C语言编程,数据结构题 要快!答的好再加更多悬赏
typedef struct LNode { ElemType date;struct LNode *next;}linklist,*link;\/*构造链表*\/\/\/ void IinitList(link &L){ if(L)delete L;L= (link)malloc(sizeof(LNode)) ;if (!L) exit(1);L->next=NULL;printf("链表已经建立\\n");} \/\/\/ \/\/ \/*删除结点*\/\/\/ \/\/\/ ...