㈠ 数据结构(c语言版)编程
约瑟夫环问题
#include<stdio.h>#include<stdlib.h>
typedef int ElemType;
typedef struct node
{
ElemType data;
struct node *next;
}slink;
void onlyone(int n);
void list(slink *head);
void onlyone(int n)
{
slink *head,*p,*q;
int i,m,k;
p=head=(slink*)malloc(sizeof(slink));
for(i=1;i<=n;i++)
{
q=(slink*)malloc(sizeof(slink));
q->data=i;
p->next=q;
p=q;
}
p->next=head;
p=head;
m=0;
while(m<n-1)
{
k=0;
while(k<3)
{
k++;q=p;p=p->next;
if(p==head)
{q=p;p=p->next;}
}
q->next=p->next;
free(p);
p=q;
m++;
}
list(head);
}
void list(slink *head)
{
slink *p;
p=head->next;
while(p!=head)
{
printf("%4d",p->data);
p=p->next;
}
printf("\n");
}
int main()
{
int a;
printf("请输入人数:");
scanf("%d",&a);
onlyone(a);
}
带头结点双向循环结点的与瑟夫环问题
#include<stdio.h>#include<stdlib.h>
typedef int ElemType;
typedef struct node
{
ElemType data;
struct node *next;
struct node *prior;
}dlink;
void onlyone(int m,int n,int k);
void list(dlink *head);
void onlyone(int m,int n,int k)
{
dlink *head,*p,*q;
int i;
if(m<1||n<1||k<1)
{printf("Error!\n");exit(0);}
p=head=(dlink*)malloc(sizeof(dlink));
for(i=1;i<=m;i++)
{
q=(dlink*)malloc(sizeof(dlink));
q->data=i;
q->prior=p;
p->next=q;
p=q;
}
p->next=head;
head->prior=p;
p=head;
while(m>1)
{
for(i=1;i<=n;i++)
{
q=p;p=p->next;
if(p==head) {q=head;p=head->next;}
}
q->next=p->next;
p->next->prior=q;
free(p);
p=q->next;
m--;
if(m>1)
{for(i=1;i<=k;i++)
{
q=p;p=p->prior;
if(p==head)
{q=p;p=p->prior;}
}
q->prior=p->prior;
p->prior->next=q;
free(p);
p=q->prior;
m--;
}
}
list(head);
}
void list(dlink *head)
{
dlink *p;
p=head->next;
while(p!=head)
{
printf("%4d",p->data);
p=p->next;
}
printf("\n");
p=head->prior;
while(p!=head)
{
printf("%4d",p->data);
p=p->prior;
}
printf("\n");
}
int main()
{
int a,b,c;
printf("请输入需要创建的自然数个数:");
scanf("%d",&a);
printf("请输入沿顺时针方向去掉的第n个数:");
scanf("%d",&b);
printf("请输入沿逆时针方向去掉的第m个数:");
scanf("%d",&c);
onlyone(a,b,c);
}
㈡ 求数据结构C语言版的编程代码
// class.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "malloc.h"
struct Node
{
int data;
struct Node *next;
}*head;//建一个head的指针构造函数
void StoreData(int k)
{
int i;
struct Node *p,*p1;
p=(struct Node *)//取地址//malloc(sizeof(struct Node*));//在这的*号可要可不要
scanf("%d",&p->data);
p->next=NULL;
head=p;p1=p;
for(i=1;i<k;i++)
{
p=(struct Node *)//取地址//malloc(sizeof(struct Node*));//在这的*号可要可不要
scanf("%d",&p->data);
p1->next=p;
p1=p;
}
}
void PrintData(int k)
{
struct Node *p=head;
int i;
for(i=1;i<=k;i++)
{
printf("%d ",p->data);
if(p->next!=NULL)
p=p->next;
}
return;
}
int main(int argc, char* argv[])
{
StoreData(5);
PrintData(5);
return 0;
}
这是链表的输入输出,你试下不行再改
㈢ 数据结构(c语言版)编程求助
就是队列的知识吧,设计4个队就行了。
㈣ 数据结构,C语言版的编程问题
#include <stdio.h>
#include <stdlib.h>
#define LENGTH 10
#define ANNOUNCER 4
int main(int argc, char **argv){
int array[LENGTH];
int len = LENGTH;
int i, j, left;
for(i = 0; i< LENGTH; i++){//marks the position that is available
array[i] = 1;
}
j = 0;
for(i = 0; i< LENGTH; i = (i+1)%10){//loop until len == 1
if(array[i] != 0){
j++;//counter
}
if(j==ANNOUNCER){//reached 4, out
array[i] = 0;//unmark
len--;
j = 0;
}
if(len == 1){
break;
}
}
for(i = 0;i<10; i++){
if(array[i] != 0){
printf("left: %d\n",i);
}
}
}
㈤ 数据结构C语言版 编程
下面的这个程序不是很完整的,因为集合c没有删除ab中相同的数,还有下面的这个程序你要建在文件里才没有错误,建源文件时,要表明是.c文件,在运行时,你要注意输入的方式,如果你有问题再问好了
#include<stdio.h>
#include<stdlib.h>
#define MAX 256
//typedef int List[MAX];
typedef int ElemType;
typedef int Status;
#define OVERFLOW -1
#define OK 1
#define LIST_INIT_SIZE 80
#define LISTINCREMENT 10
typedef struct {
ElemType *elem;
int length;
int listsize;
} SqList;
typedef SqList List;
Status InitList_Sq( SqList* L )
{
(*L).elem = (ElemType*) malloc (LIST_INIT_SIZE*sizeof (ElemType));
if (!(*L).elem) exit (OVERFLOW);
(*L).length = 0;
(*L).listsize = LIST_INIT_SIZE;
return OK;
}
void main()
{
int ListLength(List Lx);
void GetElem(List Lx,int i,ElemType *xi);
Status InitList_Sq( SqList* L );
void ListInsert(List *Lc,int k,ElemType e);
void MergeList(List La,List Lb);
void printElem(List Lx);
List La,Lb;
int i;
InitList_Sq(&La );
InitList_Sq(&Lb );
printf("pls input length of La ,Lb\n");
scanf("%d,%d",&La.length,&Lb.length);
printf("intiating La....\n");
for(i=1;i<=La.length;i++)
scanf("%d",&La.elem[i]);
printf("intiating Lb....\n");
for(i=1;i<=Lb.length;i++)
scanf("%d",&Lb.elem[i]);
printf("values of La are:\n");
printElem(La);
printf("values of Lb are:\n");
printElem(Lb);
printf("starting union...\n");
MergeList(La,Lb);
}
void MergeList(List La,List Lb)
{
List Lc;
int i,j,k;
ElemType ai,bj;
int La_len=0,Lb_len=0;
i=j=1;k=0;
InitList_Sq(&Lc );
La_len=ListLength(La);Lb_len=ListLength(Lb);
while((i<=La_len)&&(j<=Lb_len))
{
GetElem(La,i,&ai); GetElem(Lb,j,&bj);
if(ai<=bj) {ListInsert(&Lc,++k,ai);++i;}
else {ListInsert(&Lc,++k,bj);++j;}
}
while(i<=La_len)
{
GetElem(La,i++,&ai);ListInsert(&Lc,++k,ai);
}
while(j<=Lb_len)
{
GetElem(Lb,j++,&bj);ListInsert(&Lc,++k,bj);
}
Lc.length=k;
printf("values of Lc after union:\n");
printElem(Lc);
}
void printElem(List Lx)
{
int i;
for(i=1;i<=Lx.length;i++)
{
printf("%5d",Lx.elem[i]);
if(0==i%5)
printf("\n");
}
printf("\n");
}
void GetElem(List Lx,int i,ElemType *xi)
{
if(i>0 && i<=Lx.length) *xi=Lx.elem[i];
// printf("current value get: %d\n",Lx[i]);
// printf("current value get: %d\n",xi[i]);
}
int ListLength(List Lx)
{
return Lx.length;//
}
void ListInsert(List *Lc,int k,ElemType e)
{
(*Lc).elem[k]=e; //printf("insert success to e=%d\n",e);
}
㈥ 数据结构C语言编程
#include"stdio.h"
#include<stdlib.h>
#include"time.h"
intmain(intargv,char*argc[]){
doublex[10]={0.0,};
inti;
srand((unsigned)time(NULL));
while(rand()%10000!=0){//
for(i=0;i<9;x[i++]=x[i+1]);
x[9]=rand()/32767.0*100000;//模拟采集数据
}
for(i=0;i<10;printf("%10.3f ",x[i++]));//输出最后10个数
return0;
}
运行样例:
㈦ 数据结构(C语言版)编程题 急急急~
改一下这两句
if(estimate(p)==0) printf("此字符串符合要求类型。");
else printf("此字符串不符合要求类型。");
为
if(estimate(p)) printf("此字符串符合要求类型。");
else printf("此字符串不符合要求类型。");
㈧ 数据结构 c语言 编程
浏览第二遍还没人回答,看来数据结构就是麻烦,还是我给你写一个吧
struct node //节点
{
int id;
struct node *next;
};
struct queue//队
{
struct queue *front;
struct queue *rear;
int queuesize;
} Q;
bool InitQueue(struct queue *Q) //新建队
{
Q ->front = Que->rear = (struct node*)malloc(sizeof(struct node));
if(Q ->front == NULL)
return false;
Q ->front ->next = NULL;
return true;
}
bool QueueEmpty(struct queue Q) //判断是否队空
{
assert(Q.front != NULL && Q.rear != NULL); /#include<assert.h>中的可以调试用的
if(Q.front == Q.rear)
return true;
else
return false;
}
bool GetHead(struct queue Q, int *e)//得到队头
{
assert(Q.front != NULL);
if(QueueEmpty(Q))
return false;
else
{
*e = Q.front ->next ->data;
return true;
}
}
bool EnQueue(struct queue *Q, int e) //进队
{
struct node * temp = (struct node * )malloc(sizeof(struct node));
if(!temp)
return false;
temp ->data = e;
temp ->next = NULL;
Q->rear ->next = temp;
Q ->rear = temp;
return true;
}
bool DeQueue(struct queue *Q, int *e)//退出队列
{
if(Q ->front == Q->rear)
return false;
strcut node *temp = Q->front ->next;
*e = temp ->data;
Q ->front ->next= temp ->next;
if(Q ->rear == temp)
Q ->rear = Q ->front;
free(temp);
return true;
}
花了好长时间写的,懂了求个accept,不懂请追问。
电脑我懂你团队为您服务
㈨ 数据结构(c语言版)和数据结构区别
C语言是一种编程的语言,编程的语言有很多种。
而数据结构则是讲的是关于一些数据的理论知识。
可以说不管什么编程语言都能用到数据结构的知识,数据结构是程序设计基础又核心的知识。
可以将c语言想象为一种语言,那么数据结构就是一种说话的技巧,如何让你说话更简洁,有逻辑,容易让人听懂,这表达技巧不管你用中文或者ENGLISH都可以用上。
当然,如果你想成为一个优秀的程序设计人员,数据结构是必须掌握好的
㈩ 数据结构编程(c语言版)
自己动脑子,这总题目还来问。。。