有问题就有答案
Q1:数据结构(C语言版) 实在不会了····求救啊
#include #include #define maxqsize 100typedef struct { int *base; int front; int rear;}sqqueue;int initqueue(sqqueue *Q){ Q->base=(int *)malloc(maxqsize * sizeof(int)); if(!Q->base) exit(0); Q->front=Q->rear=0; return 1;}int enqueue(sqqueue *Q,int e){ if((Q->rear+1)%maxqsize==Q->front) return 0; Q->base[Q->rear]=e; Q->rear=(Q->rear+1)%maxqsize; return 1;}int dequeue(sqqueue *Q,int e){ if(Q->front==Q->rear) return 0; e=Q->base[Q->front]; Q->front=(Q->front+1)%maxqsize; printf("%d ",e); return 1;}void main(){ sqqueue Q; int i,e=0,a,x,b; initqueue(&Q;); printf("输入队列元素的个数:\n"); scanf("%d",&a;); printf("输入队列元素:\n"); for(i=0;i<a;i++) { scanf("%d",&x;); enqueue(&Q;,x); } printf("输入要删除元素的个数:\n"); scanf("%d",&b;); printf("删除的元素为:\n"); for(i=0;i<b;i++) dequeue(&Q;,e); printf("\n");}这是我做的循环队列,你参考下
Q2:编程的大佬们,c语言数据结构题目,写起来比较麻烦,但是要帮帮我啊
C语言程序:#include #include #include #define MAX 33char signs[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"};char *octs[] = {"000", "001", "010", "011", "100", "101", "110", "111"};char *hexes[] = {"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};/* 十进制数转换为二进制数(字符串表示) */char *decToBin(long num);/* 十进制数转换为八进制数(字符串表示) */char *decToOct(long num);/* 十进制数转换为十六进制数(字符串表示) */char *decToHex(long num);/* 二进制数转换为八进制数(字符串表示) */char *binToOct(char *source);/* 二进制数转换为十进制数(字符串表示) */long binToDec(char *source);/* 二进制数转换为十六进制数(字符串表示) */char *binToHex(char *source);/* 八进制数转换为二进制数(字符串表示) */char *octToBin(char *source);/* 八进制数转换为十进制数(字符串表示) */long octToDec(char *source);/* 八进制数转换为十六进制数(字符串表示) */char *octToHex(char *source);/* 十六进制数转换为十进制数(字符串表示) */char *hexToBin(char *source);/* 十六进制数转换为八进制数(字符串表示) */char *hexToOct(char *source);/* 十六进制数转换为十进制数(字符串表示) */long hexToDec(char *source);/* 返回ch字符在sign数组中的序号 */int getIndexOfSigns(char ch);/* 返回source字符串在octs数组中的序号 */int getIndexOfOcts(char *source);/* 返回source字符串在hexes数组中的序号 */int getIndexOfHexes(char *source);/* 去掉字符串最左边的"0" */char *ltrim(char *source);int main(){ long dec = 123456789; char *bin = "111010110111100110100010101"; char *oct = "726746425"; char *hex = "75BCD15"; printf("10进制数:\t%ld\n", dec); printf("2进制数:\t%s\n", decToBin(dec)); printf("8进制数:\t%s\n", decToOct(dec)); printf("16进制数:\t%s\n", decToHex(dec)); printf("\n"); printf("2进制数:\t%s\n", bin); printf("8进制数:\t%s\n", binToOct(bin)); printf("10进制数:\t%ld\n", binToDec(bin)); printf("16进制数:\t%s\n", binToHex(bin)); printf("\n"); printf("8进制数:\t%s\n", oct); printf("2进制数:\t%s\n", octToBin(oct)); printf("10进制数:\t%ld\n", octToDec(oct)); printf("16进制数:\t%s\n", octToHex(oct)); printf("\n"); printf("16进制数:\t%s\n", hex); printf("2进制数:\t%s\n", hexToBin(hex)); printf("8进制数:\t%s\n", hexToOct(hex)); printf("10进制数:\t%ld\n", hexToDec(hex)); printf("\n"); return 0;}/* 十进制数转换为二进制数(字符串表示) */char *decToBin(long num){ char *arr; char temp; int i, n; arr = (char *)malloc(sizeof(char) * MAX); n = 0; while(num > 0) { arr[n++] = num % 2 + "0"; num /= 2; } for(i=0; i 0) { arr[n++] = num % 8 + "0"; num /= 8; } for(i=0; i 0) { arr[n++] = signs[num % 16]; num /= 16; } for(i=0; i<n/2; i++) { temp = arr[i]; arr[i] = arr[n-1-i]; arr[n-1-i] = temp; } arr[n] = "\0"; return arr;}/* 二进制数转换为八进制数(字符串表示) */char *binToOct(char *source){ int i, j = 0, len; int d; /* source的长度不是3的倍数时需要补齐的长度 */ char str[4]; char *arr; char temp[MAX]; arr = (char *)malloc(sizeof(char) * MAX); len = strlen(source); d = (3 - len % 3) % 3; for(i=0; i<d; i++) { temp[i] = "0"; } for(i=d; i<len+d; i++) { temp[i] = *(source+i-d); } temp[i] = "\0"; len = strlen(temp); for(i=0; i=0; i--) { sum += t * (*(source + i) - "0"); t *= 2; } return sum;}/* 二进制数转换为十六进制数(字符串表示) */char *binToHex(char *source){ int i, j = 0, len; int d; /* source的长度不是4的倍数时需要补齐的长度 */ char str[5]; char *arr; char temp[MAX]; arr = (char *)malloc(sizeof(char) * MAX); len = strlen(source); d = (4 - len % 4) % 4; for(i=0; i<d; i++) { temp[i] = "0"; } for(i=d; i<len+d; i++) { temp[i] = *(source+i-d); } temp[i] = "\0"; len = strlen(temp); for(i=0; i<len; i+=4) { str[0] = *(temp + i); str[1] = *(temp + i + 1); str[2] = *(temp + i + 2); str[3] = *(temp + i + 3); str[4] = "\0"; arr[j++] = signs[getIndexOfHexes(str)]; } arr[j] = "\0"; return arr;}/* 八进制数转换为二进制数(字符串表示) */char *octToBin(char *source){ char *arr; int i, len; arr = (char *)malloc(sizeof(char) * MAX); len = strlen(source); arr[0] = "\0"; for(i=0; i=0; i--) { sum += t * (*(source + i) - "0"); t *= 8; } return sum;}/* 八进制数转换为十六进制数(字符串表示) */char *octToHex(char *source){ char *arr; arr = (char *)malloc(sizeof(char) * MAX); arr = octToBin(source); arr = binToHex(arr); return arr;}/* 十六进制数转换为二进制数(字符串表示) */char *hexToBin(char *source){ char *arr; int i, len; arr = (char *)malloc(sizeof(char) * MAX); len = strlen(source); arr[0] = "\0"; for(i=0; i=0; i--) { sum += t * getIndexOfSigns(*(source + i)); t *= 16; } return sum;}/* 返回ch字符在sign数组中的序号 */int getIndexOfSigns(char ch){ if(ch >= "0" && ch = "A" && ch = "a" && ch <= "f") { return ch - "a" + 10; } return -1;}/* 返回source字符串在octs数组中的序号 */int getIndexOfOcts(char *source){ int i, j; for(i=0; i<8; i++) { for(j=0; j= 3) { return i; } } return -1;}/* 返回source字符串在hexes数组中的序号 */int getIndexOfHexes(char *source){ int i, j; for(i=0; i<16; i++) { for(j=0; j= 4) { return i; } } return -1;}/* 去掉字符串最左边的"0" */char *ltrim(char *source){ int i, d, len; len = strlen(source); for(i=0; i<len && *(source+i)=="0"; i++); if(i <= 0) { return source; } d = i; for(i=d; i<=len; i++) { *(source + i - d) = *(source + i); } return source;}
Q3:C语言数据结构不会啊 求大神解答
整块源程序:#包括#定义maxsize 1024 typedef int数据类型;typedef结构{数据类型数据[最大大小];(同Internationalorganizations)国际组织长度;}序列列表;void setNull(序列列表* L){ L-长度=0;} void reverse(序列列表* L){ int I,j;数据类型t;对于(i=0,j=L-长度-1;idata[I];L-数据[我]=L-数据[j];我数据[j]=t;} } void del(sequentilist * L){ int I=0,j=0;for(I=0;ileng th-1;I){ if(L-data[I]==L-data[I ^ 1]){ for(j=I;jlength-1;左-数据[j]=L-数据[^ 1];我长度-;I=I-1;} } }无效何冰(sequence list * L5,sequence list * L5,sequence list * L5){ int I=0,k=0,j=0;L5-长度=L3-长度L4-长度;对于(i=0,k=0;I=L3-长度-1,k=L3-长度-1;I,k)L5-数据[k]=L3-数据[一];for(j=0;j=L4-长度-1;j){ L5-数据[k]=L4-数据[j];} } void insert(序列列表* L,int x) { int i,k;I=0;而((1=L-长度-1)(x=L-数据[I]))I;对于(k=L-长度-1;k=I;k-)L-数据[^ 1]数据[k];我数据[I]=x;我长度;} void main(){ sequentialist L1、L2、L3、L4、L5、L6;int i=0,x=0,k=0,j=0,t=0;数据类型数据;setNull(L1;);printf("请输入逆置顺序表的初始数据,以-1结束\ n ");scanf("M ",数据;);而(数据!=-1){ L1。数据[L1。长度]=数据;L1。长度;scanf("M ",数据;);}反向(L1;);printf("逆置后的顺序表如下: \ n ");for(I=0;我=L1。长度-1;(一)L1印刷公司。数据[I]);printf(" \ n ");setNull(L2;);printf("请输入非递减有序顺序表的初始数据,以-1结束\ n ");scanf("M ",数据;);而(数据!=-1){ L2。数据[L2。长度]=数据;L2。长度;scanf("M ",数据;);}德尔(L2;);for(I=0;我=L2。长度-1;I){ k=I;对于(j=k ^ 1;jl2。数据[j])k=j;t=L2。数据[I];L2。数据[I]=L2。数据[k];L2。数据[k]=t;} printf("删除后,顺序表由小到大排序后为:\ n ");for(I=0;il5。数据[j])k=j;t=L5。数据[I];L5。数据[I]=L5。数据[k];l5。数据[k]=t;} printf("合并后后,递增顺序表如下: \ n ");for(I=0;I=L5。长度-1;i ) printf("M ",L5。数据[I]);printf(" \ n ");setNull(L6;);printf("请输入非递减有序顺序表的初始数据,以-1结束\ n ");scanf("M ",数据;);而(数据!=-1){ L6。数据[L6。长度]=数据;L6。长度;scanf("M ",数据;);} printf("请输入要插入的数据:");scanf("M ",x;);for(I=0;我=L6。长度-1;I){ k=I;对于(j=k ^ 1;jl6。数据[j])k=j;t=L6。数据[I];L6。数据[I]=L6。数据[k];l6。数据[k]=t;}插入(L6;x);printf("插入数据后,递增顺序表如下: \ n ");for(I=0;我=L6。长度-1;(一)L6印刷公司。数据[I]);printf(" \ n ");}
Q4:C语言学的特别差,现在学数据结构都不回,有没有稍微精通的大神来指导一下怎么学C语言这些东西
学习C语言没有太多捷径。你已经开始学习数据结构,这意味着你已经学了至少一个学期的语言。这种情况下,只能自己快速弥补,否则以后什么都难学。c语言学习,首先与数据类型、运算符、关键字相关的知识一定要牢记在心。这个一定要加满,不能偷懒。关于函数和类的知识应该很熟悉,至少印象深刻。其次,C语言需要的是大量的练习,通过反复编程熟悉这些东西,不动手是不可能入门的。数据结构也需要大量的实践。起步慢没关系,学不到一个,速度会越来越快。既然在学校学习,还是有一些高效的方式,比如借学习笔记,和同学交流。其实在牢记基础知识的前提下,只要我们彻底了解一两个数据结构的程序,后续的编程就不再困难。
Q5:(用C语言编程)数据结构题(很简单哦!)帮忙!
节点* p1//链表头void insert(node *x,node * y){ node * pre=NULL;while (p1-next){if (pre!=NULL y-value=pre-value)//查找Yb breakpre=p1//记录上一个节点P1=P1-下一个;} pre-next=x;x-next=y;返回;}
Q6:c语言基础差,数据结构学不会怎么办
c语言和数据结构可以不用任何基础就能学会。所有内容都是由有限的具体知识点组成,没有复杂的知识体系。所以,学不到的东西,可以认真学。如果真的不行,那就要求老师和同学不要认为你的基础一般差。这只是为你的恐惧找理由,解决不了实际问题。