Tag: 数据结构

我的图书馆目录C程序可以帮助我吗?

我需要使用BST和文件处理,但我坚持使用这个,因为displayCatalog函数似乎不起作用。 我想在将结构打印到文件之前先建立结构。 我该怎么做? #include #include #include #include #include typedef struct book catalog; FILE *fx,*fy; struct book{ char title[20]; char author[20]; int isbn[15]; char genre[10]; char publisher[20]; int year[5]; char synopsis[100]; catalog *left; catalog *right; }; catalog *root; void addBooks(); void removeBooks(); // void modify(); // void searchBook(); // void perTitle(); // void perAuthor(); // void […]

区分文件C中的数据

我试图读取文件的内容,这些文件被分成两个不同的类型。 如下所示: # Type names bird mammal reptile . # Type effectiveness Very_effective Not_effective . 到目前为止,我可以读取第一种类型的内容,但是当我尝试读取第二种内容时,我不断重读第一种内容。 #include #include #include int main() { typedef struct { char types[1000]; char effectiveness[1000]; } sinFile; sinFile record[1000]; FILE* file; char line[121]; char period[10]; char hash[10]; char* item; char* item2; int i = 0; int j = 0; file = […]

如何访问在一个函数中创建的数据结构,在另一个函数中,而不返回或传入它?

如果可以,我只是通过在main函数中初始化结构的副本并将其传递给另一个函数来解决这个问题,但我不允许更改此项目的函数头。 既然我已经得到了这个,我也确定有一个同样好的解决方案,它将帮助我学习如何使用动态内存分配来使函数的动作独立于该函数的范围。 我的结构: typedef struct AmNet { // this struct can be changed as needed int size; User ** users; // group of users in the net User *front; // the first user User *back; // the last user } *AmNet; 要创建的function是: void create_net(){ // this line cannot be changed } 在另一个文件的main函数中,简单地用: create_net(); 然后,例如 – […]

C编程语言中的Bitfields

如何访问C.Means中的整个结构成员我想在结构中获取变量的所有数据。 struct data { char a:1; char b:2; char c:3; char d:1; } arr; 我可以通过使用访问个人成员。 operator.But我需要访问该结构中的所有成员。请告诉我该怎么办。

用户输入队列的大小

我试图在给定的代码中学习队列的数组实现 #include main() { int q[10]={0}, i, front=-1, rear=-1, max=10, n, item; printf(“\n” “\tMENU\n” “1.ENQUEUE\n” “2.DEQUEUE\n” “3.DISPLAY\n” “4.EXIT\n” ); do { printf(“\nEnter your choice\n”); scanf(“%d”,&n); switch(n) { case 1: if(rear<max-1) // ………….so on 他们没有要求用户输入队列的大小,但已经将其定义为10.仅适用于这种情况,还是我们应该始终定义它而不是让用户对队列的大小有任何控制权? PS:学习队列的任何好来源及其在初学者中的实现

将数据存储在程序中而不是外部文件中

我有以下C代码的一部分,它使用来自文件名WMM.COF的数据,并使用存储在文件中的数据来计算地球的磁场。 该程序工作正常,但我不能让程序访问外部文件; 我想将所有数据都存储在程序中。 我尝试使用结构数组来复制数据,然后将数组放入一个字符串,但这会导致程序出错并且不会产生正确的结果。 这是我正在尝试修改的程序的代码。 static void E0000(int IENTRY, int *maxdeg, double alt, double glat, double glon, double time, double *dec, double *dip, double *ti, double *gv) { static int maxord,i,icomp,n,m,j,D1,D2,D3,D4; static double c[13][13],cd[13][13],tc[13][13],dp[13][13],snorm[169], sp[13],cp[13],fn[13],fm[13],pp[13],k[13][13],pi,dtr,a,b,re, a2,b2,c2,a4,b4,c4,epoch,gnm,hnm,dgnm,dhnm,flnmj,otime,oalt, olat,olon,dt,rlon,rlat,srlon,srlat,crlon,crlat,srlat2, crlat2,q,q1,q2,ct,st,r2,r,d,ca,sa,aor,ar,br,bt,bp,bpp, par,temp1,temp2,parp,bx,by,bz,bh; static char model[20], c_str[81], c_new[5]; static double *p = snorm; char answer; FILE *wmmdat; wmmdat = […]

如何validation二进制搜索树?

这是我为validationBST而编写的代码。 这是对的吗? 如果没有,我该怎么做? int validate(node *root) { if(root==NULL) return 1; else if(root->lchild!=NULL && (root->lchild)->data >=root->data) return 0; else if(root->rchild!=NULL && (root->rchild)->data data) return 0; validate(root->lchild); validate(root->rchild); return 1; }

给定一些单词,找到一个序列,使得seq的任何相邻单词不能具有相同的字符

给出一些词,例如香蕉,猫,狗,大象,类型,中间,湖 找到这样的序列 (1)每个单词都在序列上 (2)任何相邻的单词不能有相同的字符。 如果找不到seq,则返回false。 否则,返回true和seq。 没有重复。 没有单词的排列。 我的想法: 设置图形,并使用哈密顿路径查找seq。 但是,这是一个完整的NP。 如何避免汉密尔顿路径? 还有更好的想法? 谢谢

内存布局:2D N * M数据作为指向N * M缓冲区的指针或作为指向数组的N指针数组

我对如何组织2D数据的内存布局犹豫不决。 基本上,我想要的是N * M 2D doublearrays,其中N~M是数千(并且来自用户提供的数据) 我看到它的方式,我有两个选择: double *data = new double[N*M]; 要么 double **data = new double*[N]; for (size_t i = 0; i < N; ++i) data[i] = new double[M]; 第一个选择是我倾向于。 我看到的主要优点是更短的新/删除语法,如果我正确安排访问,连续内存布局意味着在运行时相邻内存访问,并且可能更好地实现矢量化代码(自动矢量化或使用矢量库,如vDSP或vecLib) 另一方面,在我看来,与分配一堆较小的连续内存相比,分配大量连续内存可能会失败/花费更多时间。 并且第二种方法还具有与data[i*M+j]相比较短的语法data[i][j]的优点 最常见/更好的方法是什么,主要是如果我尝试从性能角度来看它(尽管那些将是小改进,我很好奇看哪哪个会更好)。

用于频繁随机访问的数组或链表?

我经常使用列表和数组,我想知道什么是更快,数组或列表? 假设我们有整数数组和链表,两者都有相同的值。 int array_data[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; typedef struct node_data{ int data; struct node_data * next; } list_data; ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ list_data *d = -> | 1| -> | 2| -> | 3| -> | 4| -> | 5| -> […]