导航:首页 > 编程语言 > 数据结构c语言编程

数据结构c语言编程

发布时间:2022-07-01 02:41:02

Ⅰ 数据结构c语言编程 急求!!!!

//在一个递增有序的线性表L中插入一个值为x的元素,并保持其递增有序特性
bool listInsert(node* L, elementType x)
{
//注意:带有空的头结点L
node* p = L->next;
node* s = new node;// 创建一个新节点
s->data = x;//装入数据
if (p->data >= x)//排在第一的特例
{
s->next = L->next;//插入操作
L->next = s;
return true;
}
while ((p != NULL) && (p->next != NULL)) //搜索ai-1节点指针
{
if (p->next->data >= x && p->data < x)
{
//插入新节点
s->next = p->next;
p->next = s;
return true;
}
p = p->next;
}
//排在最后的情况
//插入新节点
s->next = NULL;
p = s;
return true;
}
【答题不易,请采纳谢谢】

Ⅱ 数据结构c语言编程

#include "stdio.h"
#include <malloc.h>
#include <stdlib.h>
#include <string>

struct Student
{
int num;
char name[20];
int sex;//0女,1男
int score;
}stu;

struct list
{
struct Student student;
struct list *next;
};

struct list *CreatFemale(struct list *head,struct Student stu)//女生信息
{
struct list *p;
struct list *p1,*p2;
p = head;
p1 = (struct list *)malloc(sizeof(struct list));
p1->student = stu;
if (head == NULL)
{
head = p1;
p1->next = NULL;
}

else
{
while (p->next != NULL && stu.score >= p->student.score)
{
p2 = p;
p = p->next;
}

if (stu.score < p->student.score)
{
if (p == head)
{
head = p1;
p1->next = p;

}

else
{
p2->next = p1;
p1->next = p;
}
}

else
{
p->next = p1;
p1->next = NULL;
}

}

return head;
}

struct list *CreatMale(struct list *head,struct Student stu)//男生信息
{
struct list *p;
struct list *ptr;
struct list *q;
struct list *p1,*p2;
q = head;
ptr = head;
p1 = (struct list *)malloc(sizeof(struct list));
p1->student = stu;
while (q->next != NULL && q->student.sex == 0)
{
ptr = q;
q = q->next;
}
p = q;
if (head == NULL)
{
head = p1;
p1->next = NULL;
}

else
{
while (p->next != NULL && stu.score >= p->student.score)
{
p2 = p;
p = p->next;

}

if (stu.score < p->student.score && p->student.sex == 1)
{

if (p == q )
{
p = p1;
ptr->next = p1;
p1->next = q;
}
else
{
p2->next = p1;
p1->next = p;
}
}

else
{
p->next = p1;
p1->next = NULL;
}

}

return head;
}

void Print(struct list *head)//输出到文件
{
FILE *fp;
char Sex[10];
fp = fopen("data1.txt","w");
if (fp == NULL)
{
printf("can't open the file!\n");
exit(0);
}
struct list *p;
struct list *q;
p = head;

while (p != NULL)
{
if (p->student.sex == 0)
{
strcpy(Sex,"女");

}

else
{
strcpy(Sex,"男");
}
fprintf(fp,"%d %s %s %d\n",p->student.num,p->student.name,Sex,p->student.score);
q = p->next;
free(p);
p = q;
}

fclose(fp);
}

main()
{
struct list *head;
FILE *fp;
head = NULL;
fp = fopen("data.txt","r");
if (fp == NULL)
{
printf("can't open the file!\n");
exit(0);
}

while (!feof(fp))
{
fscanf(fp,"%d%s%*c%d%d",&stu.num,stu.name,&stu.sex,&stu.score);
if (stu.sex == 0)
{
head = CreatFemale(head,stu);//女
}
}

fseek(fp,0L,0);
while (!feof(fp))
{
fscanf(fp,"%d%s%*c%d%d",&stu.num,stu.name,&stu.sex,&stu.score);
if (stu.sex == 1)
{
head = CreatMale(head,stu);//男的
}
}

fclose(fp);

Print(head);
}

Ⅲ c语言 数据结构在c语言编程时到底怎么用

我刚开始学数据结构时也有一样的问题,数据结构就是结构
比如你有一个好的算法
算法涉及到了
后进先出
那你就可以直接用栈结构,首先在自己的代码里自定义栈结构
pop
push
等等函数
就和定义结构体那样
定义好了
下面就直接调用那些pop
函数之类的
就可以了。

Ⅳ 数据结构 c语言编程

#include "stdlib.h"
#include "iostream.h"

#define ERROR 0
#define OK 1

typedef int elemtype;
typedef struct lnode{
elemtype data;
struct lnode* next;
}lnode,*linklist;

void init_linklist(linklist &p)//链表参数采用引用参数,因初始化链表是从没有链表到有链表,并且要保留这个空链表以便后面使用,所以必须采用引用参数。当然采用指针参数也是可以的。
{
p=(linklist)malloc(sizeof(lnode));
p->next=NULL;
}

void crt_linklist(linklist &p,int len)//链表参数采用引用参数,与初始化同理
{
init_linklist(p);
lnode* t;
t=p;
lnode* s;
for(int i=1;i<=len;i++)
{
s=(linklist)malloc(sizeof(lnode));
s->data=i*10;
s->next=NULL;
t->next=s;
t=s;
}
}

void output_linklist(linklist p)//链表参数采用赋值参数,因为输出不改变链表结构
{
lnode* q=p->next;
int i=1;//初值设为1,因为是从第一个元素开始输出的
while(q)
{
cout<<q->data<<","<<i<<" ";
q=q->next;
i++;

}
}
int main()
{
linklist p;
int i=30;//最好用int,这里是定义长度的,不是定义一个数据元素;或者typedef int Length; Length i=30;更好,呵呵
crt_linklist(p,i);
output_linklist(p);
return 0;
}

Ⅳ C语言编程(数据结构)

int*getnum(inta)
{
staticintn[10];
inti=a;
for(i=1;i<=a;i++)
{
intk=i;
while(i>0)
{
n[i%10]++;
i/=10;
}
i=k;
}
returnn;
}
intmain()
{
int*m=getnum(11);
inti;
for(i=0;i<10;i++)
{
printf("%d",m[i]);
}
getch();
return0;
}

Ⅵ C语言数据结构编程

#include<stdio.h>
#include<stdlib.h>
#include"string.h"

intmain(intargc,char*argv[])
{
char*buffer=(char*)malloc(sizeof(char)*100);
char*b=(char*)malloc(sizeof(char)*100);
memset(buffer,'',100);
memset(b,'',100);
chars1[10]={""};
chars2[10]={""};
chars3[10]={""};
inti1,i2,i3,i,j=0;
intlen=strlen(gets(buffer));
for(i=0;i<len;i++)
{
if(buffer[i]!='')
{
b[j]=buffer[i];
j++;
}
}
len=strlen(b);
i1=0;i2=0;i3=0;
for(i=0;i<len/3;i++)
{
switch(b[i*3])
{
case'1':
s1[i1++]=b[i*3];
s1[i1++]=b[i*3+1];
s1[i1++]=b[i*3+2];

break;
case'2':
s2[i2++]=b[i*3];
s2[i2++]=b[i*3+1];
s2[i2++]=b[i*3+2];

break;
case'3':
s3[i3++]=b[i*3];
s3[i3++]=b[i*3+1];
s3[i3++]=b[i*3+2];

break;
}
}
printf(" ");
intn=strlen(s3);
for(i=n-3;i>=0;i-=3)
{
printf("%c%c%c",s3[i],s3[i+1],s3[i+2]);
}
n=strlen(s2);
for(i=n-3;i>=0;i-=3)
{
printf("%c%c%c",s2[i],s2[i+1],s2[i+2]);
}
n=strlen(s1);
for(i=n-3;i>=0;i-=3)
{
printf("%c%c%c",s1[i],s1[i+1],s1[i+2]);
}
return0;
}

Ⅶ 数据结构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语言编程求解,数据结构

方法很多,可以在插入数据后再对线性表进行删改,也可以在插入前进行处理。

我这里代码是在插入前处理。

(注释掉的函数int getPNUM(struct Sqlist *st,int n);是我预留的,题2如果你想改成插入后,再对线性表素数进行查找,可以用这个函数。否则可以删除)。

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define LIST_INIT_SIZE 800

struct Sqlist{

int *elem;

int length;

int listsize;

};

int insert2List(struct Sqlist *st,int num,int inx);//向线性表第inx个元素的位置插入一个元素。成功返回1,失败返回0

int findNum(struct Sqlist *st,int num);//在线性表中查找指定数字,存在返回1,不存在返回0

//int getPNUM(struct Sqlist *st,int n);//查找素数,返回第几n个素数的下标。未找到返回-1

void showList(struct Sqlist *st);//打印线性表

void clearList(struct Sqlist *st);//清空线性表

int main()

{

int i,k,nums[LIST_INIT_SIZE],n,num,cnt,flag;

struct Sqlist st={nums,0,LIST_INIT_SIZE};

srand(time(NULL));


//--------------题1-----------------------------------------------------------------------

n=100;

k=1;

printf("1、随机生成100个【100,200】之间的随机数,去除重复并保存到线性表 ");

while(n--)

{

num=rand()%101+100;

printf("--%3d产生随机数%d ",k++,num);

if(findNum(&st,num))

printf("该数字已在线性表中存在,重复去除 ");

else

{

if(insert2List(&st,num,st.length+1))

printf("该随机值已保存到线性表尾部 ");

else{

printf("异常!插入失败! ");

return 1;

}


}

}

showList(&st);


clearList(&st);

//-------------题2----------------------------------------------------------------

n=20;

cnt=0;

k=1;

printf("1、随机生成20个【1,200】之间的随机数,在第一个素数后插入1个0,第二个素数后插入2个0,以此类推,最后输出所有元素 ");

while(n--)

{

num=rand()%200+1;

printf("--%3d产生随机数%d ",k++,num);

flag=1;

for(i=2;i<num;i++)

if(num%i==0)

{

flag=0;

break;

}

if(flag)

{

cnt++;

printf("该随机值是一个素数,在其尾部插入%d个0 ",cnt);

for(i=0;i<cnt;i++)

num*=10;

printf("该随机值变更为%d ",num);

}

if(insert2List(&st,num,st.length+1))

printf("该随机值已保存到线性表尾部 ");

else{

printf("异常!插入失败! ");

return 1;

}


}

showList(&st);

return 0;

}

void clearList(struct Sqlist *st)//清空线性表

{

st->length=0;

printf("线性表数据已清除 ");

}

void showList(struct Sqlist *st)//打印线性表

{

int i;

printf("当前线性表的数据为: ");

for(i=0;i<st->length;i++)

printf("%d ",st->elem[i]);

printf(" ");

}

int findNum(struct Sqlist *st,int num)//在线性表中查找指定数字,存在返回1,不存在返回0

{

int *p=st->elem;

while(p<=&st->elem[st->length-1])

if(*p++==num)

return 1;

return 0;

}

/*

int getPNUM(struct Sqlist *st,int n)//查找素数,返回第几n个素数的下标。未找到返回-1

{

int i,j,flag,cnt=0;

for(i=0;i<st->length;i++)

{

flag=1;

for(j=2;j<st->elem[i];j++)

if(st->elem[i]%j==0)

{

flag=0;

break;

}

if(flag)

cnt++;

if(cnt==n)

return i;

}

return -1;

}

*/

int insert2List(struct Sqlist *st,int num,int inx)//向线性表第inx个元素的位置插入一个元素。成功返回1,失败返回0

{

int i;

if(st->length==st->listsize)

{

printf("线性表已满,插入失败! ");

return 0;

}

if(inx<1 && inx>st->length+1)

{

printf("插入位置无效!线性表当前数据长度为%d,插入位置必须大于1且不能大于%d! ",st->length,st->length+1);

return 0;

}

for(i=st->length;i>=inx;i--)

st->elem[i]=st->elem[i-1];

st->elem[inx-1]=num;

st->length++;

return 1;

}

Ⅸ 数据结构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语言 编程 数据结构

先不谈你代码逻辑。仅仅看代码错误。
1、你结构类型别名SqList,后面代码全写的是Sqlist,大小写错了。
2、你int I, j,temp;这里第二个逗号错了,是中文输入法!

阅读全文

与数据结构c语言编程相关的资料

热点内容
怎样编辑硬盘文件夹 浏览:654
安卓系统如何打开电脑软件 浏览:566
android监听事件处理 浏览:743
h3c服务器怎么看功率 浏览:119
前端录制文件如何上传服务器 浏览:536
雅黑pdf 浏览:458
python使用领域 浏览:880
买兰博基尼用什么app 浏览:137
android关闭后台运行 浏览:505
python输出路径为超链接 浏览:533
caxa为什么没有加密锁 浏览:792
服务器怎么设置才能用IP访问 浏览:663
邮件附件加密后打开能显示吗 浏览:724
荣耀x10拍照算法 浏览:569
androidgradle配置签名 浏览:96
文件夹左边的空心三角符号是什么 浏览:287
app英语音频试卷扫码怎么听 浏览:613
字符串编译预处理 浏览:704
苹果手机怎么会显示多个App 浏览:241
不去互联网程序员 浏览:555