数据结构的c语言实现
发布时间: 2021-03-04 10:40:25
1. 数据结构,用c语言实现。。。
这个是堆栈。不管是C还是其他的语言里都应该有的,因为这在数据结构里是一版种很常见的东权西。如果你要用C语言实现的话,实现的手法大概也就只能从数组或者链表来实现了。数据结构书上很多。也很简单。
int a[20];int t=0;int p;
while(N)
{
p=N%8;
a[t]=p;
t++;
N=N/8;
}
for(;t>=0;t--)
{
priintf("%d";a[t]);
}
就是正着输进去,反着数出来,类似于8进制。
2. 数据结构题目,用c语言实现。
/*------数据类型预定义------*/
typedefintStatus;//函数结果状态类型
/*------函数结果状态代码------*/
#defineTRUE1
#defineFALSE0
#defineOK1
#defineERROR0
#defineOVERFLOW-2
/*------队列数据类型定义------*/
typedefintQElemType;//队列中元素的数据类型
/*------数据类型预定义------*/
typedefintStatus;//函数结果状态类型
/*------队列动态存储分配初始常量预定义------*/
#defineQUEUE_INIT_SIZE100//队列存储空间的初始分配量
#defineQUEUEINCREMENT10//队列存储空间的分配增量
#defineMAXQUEUESIZE100//循环队列最大长度
/*------全局变量定义------*/
intFLAG;//出、入队列操作标志
/*------队列存储结构类型定义------*/
typedefstruct
{
QElemType*base;//队列初始化动态分配存储空间
intfront;//对头指针向量,若队列不空,指向队列头元素
intrear;//队尾指针向量,若队列不空,指向队列尾元素的下一个位置
}SqQueue;//顺序队列结构类型
StatusInitQueue(SqQueue&Q)
{//构造一个空队列Q
Q.base=(QElemType*)malloc(QUEUE_INIT_SIZE*sizeof(QElemType));
if(!Q.base)
return(OVERFLOW);
Q.front=Q.rear=0;
FLAG=0;
returnOK;
}//InitQueue
StatusStatusQueue(SqQueue&Q)
{//返回队列当前状态
if(Q.front==Q.rear&&FLAG==0)//队列为空
returnFLASH;
if(Q.front==Q.rear&&FLAG==1)//队列为满
returnTURE;
}//StatusQueue
StatusEnQueue(SqQueue&Q,QElemTypee)
{//元素e入队列
if(StatusQueue(Q))//队列为满
returnERROR;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQUEUESIZE;
FLAG=1;
returnOK;
}//EnQueue
StatusDeQueue(SqQueue&Q,QElemType&e)
{//元素e出队列
if(!StatusQueue(Q))
returnERROR;
e=Q.base[Q.front++];
FLAG=0;
returnOK;
}//DeQueue
3. 数据结构的问题,如何用c语言实现
以前写的多项式运算
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
typedefstruct_PolyNode{
intindex;
intcofficient;
}NodeType;
typedefstruct_polynomial{
NodeTypedata;
struct_polynomial*next;
}Polynomial;
voidappend(Polynomial*head,NodeTypedata){
Polynomial*p=(Polynomial*)malloc(sizeof(Polynomial));
p->data=data;
p->next=head->next;
head->next=p;
}
voidinput(Polynomial*head){
NodeTypedata;
do{
scanf("%d%d",&data.cofficient,&data.index);
append(head,data);
}while(data.cofficient!=0&&data.index!=-1);
}
/**
*合并同类项并去除系数为的项
*/
voidmerge(Polynomial*head){
Polynomial*p;
for(p=head->next;p->next;p=p->next)
if(p->data.index==p->next->data.index){
p->data.cofficient+=p->next->data.cofficient;
p->next->data.cofficient=0;
}
for(p=head;p->next;)
if(p->next->data.cofficient==0){
Polynomial*q;
q=p->next;
p->next=q->next;
free(q);
}
else
p=p->next;
}
/**
*按指数从高到低排序
*/
voidsort(Polynomial*head){
Polynomial*p,*q;
for(p=head->next;p->next;p=p->next){
NodeTypet=p->data;
for(q=p->next;q;q=q->next){
if(t.index<q->data.index){
p->data=q->data;
q->data=t;
t=p->data;
}
}
}
}
Polynomial*add(Polynomial*a,Polynomial*b){
Polynomial*p,*ret=(Polynomial*)malloc(sizeof(Polynomial));
ret->next=NULL;
for(p=a->next;p;p=p->next)
append(ret,p->data);
for(p=b->next;p;p=p->next)
append(ret,p->data);
sort(ret);
merge(ret);
returnret;
}
Polynomial*multiply(Polynomial*a,Polynomial*b){
Polynomial*p,*q,*ret=(Polynomial*)malloc(sizeof(Polynomial));
ret->next=NULL;
for(p=a->next;p;p=p->next)
for(q=b->next;q;q=q->next){
NodeTypedata={p->data.index+q->data.index,p->data.cofficient*q->data.cofficient};
append(ret,data);
}
sort(ret);
merge(ret);
returnret;
}
voiddisplay(Polynomial*head){
Polynomial*p;
for(p=head->next;p;p=p->next){
if(p->data.cofficient<0)
printf("-");
elseif(p!=head->next)
printf("+");
if(!(abs(p->data.cofficient)==1&&p->data.index>0))
printf("%d",abs(p->data.cofficient));
if(p->data.index>0){
printf("X");
if(p->data.index>1)
printf("^%d",p->data.index);
}
}
printf(" ");
}
intmain(){
Polynomial*a=(Polynomial*)malloc(sizeof(Polynomial)),
*b=(Polynomial*)malloc(sizeof(Polynomial));
input(a);
input(b);
display(a);
display(b);
display(add(a,b));
display(multiply(a,b));
return0;
}
4. 数据结构c语言题目实现
#include <stdio.h>
#define SIZE 1024
int main(void){
int myQQGroupNumber=936250734;
char text[SIZE];
char encry[SIZE];
gets(text);
int p=0,m,n,pe=0;
while(text[p]!='