數據結構的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]!='