㈠ 數據結構(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語言版)
自己動腦子,這總題目還來問。。。