導航:首頁 > 編程語言 > 數據結構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語言編程相關的資料

熱點內容
華為伺服器如何進陣列卡配置 瀏覽:433
apache伺服器ip地址訪問 瀏覽:716
如何買到安卓手機預裝軟體 瀏覽:535
冤罪百度雲不要壓縮 瀏覽:83
蘇州雲存儲伺服器 瀏覽:173
解壓收納原聲 瀏覽:384
java注冊驗證 瀏覽:372
火花app怎麼上推薦 瀏覽:980
什麼app能游戲投屏到電視上 瀏覽:455
伺服器託管到雲端是什麼意思 瀏覽:835
app保存草稿怎麼用 瀏覽:808
安卓如何進入proumb 瀏覽:144
主機虛擬雲伺服器 瀏覽:619
刪除分區加密的空間會不會恢復 瀏覽:706
京東app客戶上門怎麼看搜索量 瀏覽:741
怎麼在農行app購買黃金 瀏覽:46
c型開發板和單片機 瀏覽:146
虛擬機建立用戶的模板文件夾 瀏覽:904
無錫代碼編程培訓班 瀏覽:632
eps圖形數據加密 瀏覽:933