c语言数据结构词索引表出了点问题,谁能帮忙看看呀

#include
#include
#include
#include
#include

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define OVERFLOW -2

#define MaxBookNum 1000 //假设只对1000本书建立索引表(1000)
#define MaxKeyNum 2500 //索引表的最大容量(2500)
#define MaxLineLen 500 //书目串的最大长度(500)
#define MaxWordNum 10 //词表的最大容量
#define MaxWordLength 30 //单词的最大长度

typedef int Status;
typedef int ElemType; //定义链表的数据元素类型为整型
typedef int Boolean;
typedef struct
{
char item[MaxWordNum][MaxWordLength]; //字符串的数组
int last; //词表的长度
}WordListType; //词表的类型(顺序表)
typedef struct
{
char ch; //如果是非空串,则按串长分配存储区,否则ch为NULL
int length; //串长度
}HString;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*Link,*Position;
typedef struct
{
Link head,tail;
int len;
}LinkList;
typedef struct
{
HString key; //关键词
LinkList bnolist; //存放书号索引的链表
}IdxTermType; //索引项类型
typedef struct
{
IdxTermType item[MaxKeyNum+1];
int last;
}IdxListType; //索引表类型
//----------------主要变量--------------
char buf[MaxLineLen]; //书目串缓冲区
WordListType wdlist; //关键字词表
IdxListType idxlist; //索引表
char oftenwords[6][10] = {"an","a","of","and","to","the"};
/
******************************声明部分****************************************/
//--------------基本操作---------
void InitIdxList (IdxListType idxlist);
//初始化操作,置索引表idxlist为空表,且在idxlist.item[0]设一空串
void GetLine (FILE *f);
//从文件F读入一个书目信息到书目串缓冲区buf
void ExtractKeyWord (int *Num);
//Status ExtractKeyWord(char
Buffer,WordListType *w,int *Num);
//从buf中提取书名关键词到词表wdlist,书号存入bno
Status InsIdxList (IdxListType *idxlist,ElemType bno);
//将书号为bno的书名关键词按词典顺序插入索引表idxlist
void PutText (FILE *g,IdxListType idxlist);
//将生成的索引表idxlist输出到文件g
//--------------为实现在索引表上进行插入,要先实现下列操作-----------
void GetWord (int i,HString *wd);
//用wd返回词表wdist中第i个关键词
int Locate (IdxListType *idxlist,HString wd,Boolean *b);
//在索引表idxlist中查询是否存在与wd相等的关键词。若存在,则返回其在索引表
//中的位置,且b取值TRUE;否则返回插入位置,且b取值FALSE
void InsertNewKey(int j,HString wd);
//在索引表idxli的第i项上插入新关键词wd,并初始化书号索引的链表为空表
Status InsertBook (int i,int bno);
//在索引表idxlist的第i项中插入书号为bno的索引
//------------串的堆分配存储表示-----------
Status StrAssign(HString *T,char *chars);
//生成一个其值等于串常量chars的串T
int StrCompare(HString S,HString T);
//若S>T,则返回值>0,若S=T,则返回值 = 0,若S<T,则返回值<0
Status StrCopy(HString *T, HString S);
//由串S复制得串T

//----------------带头结点的线性链表-------------

Status InitList(LinkList *L);
//构造一个空的线性链表L

Status MakeNode(Link *p,ElemType e);
//分配由p指向值e的结点,并返回OK;若分配失败,则返回ERROR

Status Append (LinkList *L,Link s);
//将指针s所指的一串结点链接在线性链表L的最后一个结点
//之后,改变链表L的尾指针指向新的尾结点

/*******************************函数部分****************************************/
Status StrAssign(HString T,char *chars)
{
int i = strlen(chars);
if((*T).ch)
free((*T).ch);
if(!i){ //若chars为空
(*T).ch = NULL;
(*T).length = 0;
}
else{ //chars不空
if(!((*T).ch = (char *)malloc(i * sizeof(char)))) //为T分配chars所需的存储空间
exit(OVERFLOW);
int count;
for(count = 0;count <= i;count++) //把chars存入T中
(*T).ch[count] = chars[count];
(*T).length = i;
} //else
return OK;
}
void InitString(HString *T)
{
(*T).length = 0;
(*T).ch = NULL;
}
int StrCompare(HString S,HString T)
{
int count;
for(count = 0;count<S.length && count<T.length;count++){
if(S.ch[count] != T.ch[count])
return S.ch[count]-T.ch[count] ;
}
return S.length-T.length;
}
Status StrCopy(HString *T, HString S)
{
int j;
if((*T).ch)
free((*T).ch); //删除T串中原有值
(*T).ch = (char
)malloc(S.length * sizeof(char));
if(!(*T).ch)
exit(OVERFLOW);
for(j = 0; j <= S.length; j++)
(*T).ch[j] = S.ch[j];
(*T).length = S.length;
return OK;
}
Status InitList(LinkList *L)
{
Link p;
p = (Link)malloc(sizeof(LNode));
if(!p)
exit(OVERFLOW);
p->next = NULL;
(*L).head = (*L).tail = p;
(*L).len = 0;
return OK;
}
Status MakeNode(Link *p,ElemType e)
{
*p = (Link)malloc(sizeof(LNode));
if(!(*p))
exit(OVERFLOW);
(*p)->data = e;
(*p)->next = NULL;
return OK;
}
Status Append (LinkList *L,Link s)
{
int i = 1;
(*L).tail->next = s;
while(s->next){
s = s->next;
i++;
}
(*L).tail = s;
(*L).len += i;
return OK;
}
void GetWord(int i,HString *wd)
{
char *p;
p = *(wdlist.item +i);
StrAssign(wd,p); //生成关键字字符串
}
int Locate(IdxListType *idxlist,HString wd,Boolean *b)
{
int i,m;
for(i = (*idxlist).last-1; ( m=StrCompare((*idxlist).item[i].key,wd) ) >0; --i);

if(m == 0){ //找到
b = TRUE;
return i;
}
else{
*b = FALSE;
return i+1;
}
}
void InsertNewKey(int j,HString wd)
{
int count;
InitList(&idxlist.item[idxlist.last+1].bnolist);
for(count = idxlist.last-1; count>=j; --count){ //后移索引项
idxlist.item[count+1] = idxlist.item[count];
}
InitString(&idxlist.item[j].key);
StrCopy(&idxlist.item[j].key,wd); //插入新的索引项 //串赋值
InitList(&idxlist.item[j].bnolist); //初始化书号索引表为空表
++idxlist.last;
}
Status InsertBook (int i,int bookno)
{
Link p;
if(!MakeNode(&p,bookno))
return ERROR;
Append(&idxlist.item[i].bnolist,p);
return OK;
}
Status InsertIdxList(IdxListType *idxlist,int bno)
{
int i,j;
HString wd;
Boolean b;
InitString(&wd);
for(i= 0;i<wdlist.last;++i){
GetWord(i,&wd); //获取wdlist中保存的单词
j = Locate(idxlist,wd,&b); //查找是否已存在于idxlist中
if(!b) //不存在
InsertNewKey(j,wd); //则插入新的关键词
InsertBook(j,bno); //插入书号
}
return OK;
}
void InitIdxList (IdxListType *idxlist)
{
int i;
(*idxlist).last = 0;
for(i = 0;i<MaxKeyNum;i++){
InitList(&(*idxlist).item[i].bnolist); //初始化索引表项目中的书号的链表
}
}
void ExtractKeyWord (int *BookNum)
{
int i = 0,j = 0,k = 0,m;
wdlist.last = 0; //很重要
Boolean Ignore;
char TempChar[30];
for(m = 0;m<=30;m++)
TempChar[m] = '\0'; //清空TempChat[]
while(
(buf+i) !=' '){ //提取书目串缓冲区其中的书号
TempChar[i] = (buf+i); //将书号以字符串类型保存在该数组中
i++;
}
TempChar[i] ='\0';
*BookNum = atoi(TempChar); //将书号转为int
for(m = 0;m<=i;m++)
TempChar[m] ='\0'; //清空TempChat[]
i++; //推进一位,当前
(buf+i)开始为书名
while(*(buf+i) !='\n' && (buf+i) != '\0'){
//每个字符串末尾都有结束符\n
if(
(buf+i) != ' '){ //若非空字符
if(*(buf+i) >'A'&& *(buf+i) <= 'Z'){
*(buf+i) -= 'A' - 'a'; //若为大写,则转为小写
}
TempChar[j] = *(buf+i); //把当前字符加入TempChar中//------------
j++;
i++;
} //if
else{ //若为空字符,则检索当前TempChar中保存的字符串是否为常用词
Ignore = FALSE; //若Ignore为TRUE,则为常用词;为FALSE则不是常用词

for(m = 0;m<6;m++){ //查找是否为常用词
if(strcmp(TempChar,oftenwords[m]) == 0){
Ignore = TRUE; //是常用词
break;
}//if
}//for
if(Ignore){
for(m = 0;m<=j;m++)
TempChar[m] = '\0'; //清空TempChat[]
i++;
j = 0;
}//if
else{ //不是常用词
for(m = 0;m<=j;m++) //将该词插入wdlist中
wdlist.item[wdlist.last][m] = TempChar[m];
for(m = 0;m<=j;m++)
TempChar[m] = '\0'; //清空TempChat[]
k++;
wdlist.last++;
i++;
j=0;
}//else
}//else

}//while
}

void GetLine(FILE *f)
{
fgets(buf,MaxLineLen,f);
}

void PutText (FILE g,IdxListType idxlist)
{
int i,j,k;
Link p;
for(i = 0;i<=idxlist.last;i++){
for(j = 0;j<idxlist.item[i].key.length; j++)
putc(
(idxlist.item[i].key.ch + j),g);
putc('\t',g);
if(idxlist.item[i].key.length < 8)
putc('\t',g);
p = idxlist.item[i].bnolist.head;
for(k = 0;k p = p->next;
fprintf(g,"%03d",p->data);
putc(' ',g);
}//for
putc('\n',g);
}//for
}

void PrintFile(FILE *FileName)
{
char ch;
rewind(FileName);
ch = getc(FileName);
while(ch != EOF){
putchar(ch);
ch = getc(FileName);
}
printf("\n");
rewind(FileName);
}

/*******************************主函数部分**************************************/

int main()
{
FILE *f,*g;
int ct;
int BookNo;
if((f = fopen("BookName.txt","r")) == NULL){
printf("ERROR in open BookName.txt\n");
exit(1);
}
if((g = fopen("KeyWordIndex_self.txt","w"))==NULL){
printf("ERROR in open KeyWordIndex_self.txt\n");
exit(1);
}
printf("书单文件:\n");
PrintFile(f);
InitIdxList(&idxlist);
WordListType w;
while(!feof(f)){
GetLine(f); //读取书单文件中的一行到缓冲区
ExtractKeyWord(&BookNo);
InsertIdxList(&idxlist,BookNo);
}
PutText(g,idxlist);
fclose(f);
fclose(g);
printf("\n结果如下:\n");
if((g = fopen("KeyWordIndex_self.txt","r"))==NULL){
printf("ERROR in open KeyWorkIndex_self.txt\n");
exit(1);
}
PrintFile(g);
fclose(g);
return 0;
}

3个回答

用代码插入功能啊,指出哪一个函数有问题

哪个函数有问题就贴哪个函数的代码,有插入代码片的功能,你这样没人想帮你看的

设置断点和打印,一点点排除

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
数据结构C语言链表输入排序问题

题目: 持续输入 学号,姓名,地址 -1终止输入 _再按照学号从小到大顺序输出_ 个人感觉问题可能出在31行到38行 插入在链表最前面的时候会出现问题,其他情况没有问题 _测试 输入会错误的情况(插在开头):_ 3,sfdfs,sdfsfd 2,sdf,sdf,sfd -1 测试 输入会正确的情况: 3,sdf,sd,sfd 5,fsd,sdf 4,dsf,sdf -1 /////姓名和地址就乱打几个字符了。。。 下面是关于链的的数据的调试截图(输出_会错误的情况_,数据见上文 ) ![图片说明](https://img-ask.csdn.net/upload/201804/02/1522667445_697244.png) 直到输入 —1终止前 ,都是正确的(↑↑↑第一张调试图,排序也是对的) 但是终止后,就会无限输出开头的(↓↓↓最后输入的插到开头的那个数) 主链变成next永远指向自己的。 ![图片说明](https://img-ask.csdn.net/upload/201804/02/1522667643_272901.png) 虽然是用双链表写的,但是没什么关系。 个人感觉问题在出在指针返还值或者函数返还值上面,_步骤应该都是没有问题的_,调试了很多遍 ``` #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct node { char name[20]; char add[20]; int nu; struct node *pre; struct node *next; }Newnode; Newnode sort( node *q, Newnode *inser ) /* sort+insert 找到位置插入 */ { Newnode *temp = q; while ( 1 ) { if ( temp->next == NULL && temp->nu < inser->nu ) /* 插在尾的情况,插入数大于所有temp + 第一个数时插在后面 */ { temp->next = inser; inser->pre = temp; return(*q); } if ( temp->pre == NULL && temp->nu > inser->nu ) /* 第一个数时插在前面 */ { /* printf("okOK"); */ /* temp->pre=inser; */ inser->next = temp; return(*inser); } } inser->next = temp; inser->pre = temp->pre; temp->pre->next = inser; temp->pre = inser; return(*q); } Newnode add( Newnode *q ) //q就是主链的地址 { int count = 0; while ( 1 ) { Newnode *newnode; newnode = (Newnode * ) malloc( sizeof(Newnode) ); scanf( "%d,", &newnode->nu ); if ( newnode->nu == -1 ) { return(*q); } newnode->next = NULL; newnode->pre = NULL; scanf( "%[^,]%[^\n]", newnode->name, newnode->add ); if ( q->pre == NULL && q->next == NULL && count == 0 ) { q = newnode; count++; /* 第一个数的输入,只输入一次 */ continue; }else *q = sort( q, newnode ); /* 从第二个数开始就插入,这里的指针传递对吗。。。 */ } return(*q); } void printall( Newnode *q ) { Newnode *temp = q; /* temp当前指针 */ printf( "%d %s %s\n", q->nu, q->name, q->add ); temp = temp->next; /* printf("%d %s %s\n",temp->nu,temp->name,temp->add); */ while ( temp != NULL ) { printf( "%d %s %s\n", temp->nu, temp->name, temp->add ); temp = temp->next; } /* printf("%d %s %s\n",temp->nu,temp->name,temp->add); */ } /* ////////////////////// */ int main( void ) { char inpu; int inpu2; Newnode p; p.pre = NULL; p.next = NULL; p = add( &p ); printall( &p ); } ``` 第一个特别输入 其他 找到位置,然后插入,排序一个插入一个。 调试调试吧。 再次说一下,步骤应该是没有问题的。(除了插在开头的情况会出现错误)调试了很多数据了。感觉问题应该出在指针返还上面。

求数据结构C语言版严蔚敏吴伟民PDF版 紫色封面

求数据结构C语言版严蔚敏吴伟民PDF版 紫色封面 求数据结构C语言版严蔚敏吴伟民PDF版 紫色封面 求数据结构C语言版严蔚敏吴伟民PDF版 紫色封面

c语言 数据结构合并有序顺序表

请大神帮忙看看为什么运行出来后面会有一串奇怪的数 #include<stdio.h> #include<stdlib.h> #define MAXSIZE 10 typedef struct { int elem[MAXSIZE]; int len; }sqlist; void merge(sqlist *la,sqlist *lb,sqlist *lc) { int i,j,k; i=j=k=0; if(la->len+lb->len<=MAXSIZE) { while(i<la->len&&j<lb->len) { if(la->elem[i]<lb->elem[j]) { lc->elem[k]=la->elem[i]; i++; k++; } else if (la->elem[i]>lb->elem[j]) { lc->elem[k]=lb->elem[j]; j++; k++; } else { lc->elem[k]=lb->elem[j]; i++; j++; k++; } } while(i<la->len) { lc->elem[k]=la->elem[i]; i++; k++; } while(j<lb->len) { lc->elem[k]=lb->elem[j]; j++; k++; } lc->len=la->len+lb->len; } else printf("out of bound"); } void print(sqlist *l) { int i; for(i=0;i<l->len;i++) { printf("%d ",l->elem[i]); } } int main() { int i; sqlist la={{1,2,5,8,9},5}; sqlist lb={{2,4,7,18,21},5}; sqlist lc={{0},0}; merge(&la,&lb,&lc); print(&lc); return(0); }

使用C语言实现数据结构中图的操作

使用C语言实现数据结构中图的操作,链式创建,两种形式的遍历,查找路径及最短路径 。访问某个顶点的邻接点

C语言 数据结构 舞伴配对问题

#include<string.h> #include<ctype.h> #include<malloc.h> #include<limits.h> #include<stdio.h> #include<stdlib.h> #include<io.h> #include<math.h> #include<process.h> #define N 100 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 typedef int Status; typedef int Boolean; typedef struct { char sex; char name[20]; }Person; typedef Person DataType; #define MAXQSIZE 100 #define QUEUEINCREMENT 2 typedef struct { Person *base; int front; int rear; }SqQueue; char InitQueue(SqQueue *Q) {//构造一个空队列Q (*Q).base=(DataType *)malloc(MAXQSIZE*sizeof(DataType)); if(!(*Q).base) printf("OVERFLOW\n"); (*Q).front=(*Q).rear=0; return OK; } Status QueneEmpty(SqQueue *Q) { if((*Q).front==(*Q).rear) return TRUE; else return FALSE; } Status EnQuene(SqQueue *Q,DataType e) { if(((*Q).rear+1)%MAXQSIZE==(*Q).front) { return ERROR; } (*Q).base[(*Q).rear]=e; (*Q).rear=((*Q).rear+1)%MAXQSIZE; return OK; } Status DeQuene(SqQueue *Q,DataType e) { if((*Q).front==(*Q).rear) return ERROR; e=(*Q).base[(*Q).front]; (*Q).front=((*Q).front+1)%MAXQSIZE; return OK; } Person Gethead(SqQueue *Q) { if((*Q).front!=(*Q).rear) return (*Q).base[(*Q).front]; else exit(0); } void DancePartner(Person dancer[],int num) { Person p; SqQueue Mdancers,Fdancers; int i; InitQueue(&Mdancers); InitQueue(&Fdancers); for(i=0;i<num;i++) { p=dancer[i]; if(p.sex=='F') EnQuene(&Fdancers,p); else EnQuene(&Mdancers,p); } printf("the danceing partner are: \n"); while(!QueneEmpty(&Fdancers)&&!QueneEmpty(&Mdancers)); { DeQuene(&Fdancers,p); printf("%s",p.name); DeQuene(&Mdancers,p); printf("%s",p.name); } if(!QueneEmpty(&Fdancers));//输出女士剩余人数及队头女士的名字 { p=Gethead(&Fdancers); printf("%s will be the first to get a partner \n",dancer[i].name); } if(!QueneEmpty(&Mdancers)) { p=Gethead(&Mdancers); printf("%s will be the first to get a partner \n",dancer[i].name); } } int main() { Person dancers[N]; int i,num; printf("输入跳舞总人数:\n"); scanf("%d",&num); printf("输入姓名和性别:\n"); for(i=0;i<num;i++) { scanf("%s",&dancers[i].name[20]); getchar(); scanf("%c",&dancers[i].sex); } DancePartner(&dancers[N],num); return 0; } 程序正确,没有错误,警告。但是不能输出结果

c语言中数据结构节点问题

c语言中的节点 链条是什么意思??????????????????

C语言数据结构:表达式求值代码问题

要求允许小数,过滤空格,可以+ - * /和求指数 ![图片说明](https://img-ask.csdn.net/upload/201509/20/1442745186_82575.png) #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #define true 1 #define false 0 #define OPSETSIZE 8 //运算符集合数为8 char OPSET[OPSETSIZE] = { '+', '-', '*', '/', '(', ')', '#', '^' }; unsigned char Prior[8][8] = { /**********运算符优先级表***********/ // '+' '-' '*' '/' '(' ')' '#' '^' /*'+'*/ '>', '>', '<', '<', '<', '>', '>', '<', /*'-'*/ '>', '>', '<', '<', '<', '>', '>', '<', /*'*'*/ '>', '>', '>', '>', '<', '>', '>', '<', /*'/'*/ '>', '>', '>', '>', '<', '>', '>', '<', /*'('*/ '<', '<', '<', '<', '<', '=', ' ', '<', /*')'*/ '>', '>', '>', '>', ' ', '>', '>', '>', /*'#'*/ '<', '<', '<', '<', '<', ' ', '=', '<', /*'^'*/ '>', '>', '>', '>', '<', '>', '>', '>' }; typedef int Status; typedef struct StackChar { char oper; struct StackChar *next; }SC; //StackChar类型的结点SC typedef struct StackDouble { double num; struct StackDouble *next; }SD; //StackDouble类型的结点SD /*********FUN:SC类型的指针入栈,返回p **********/ SC *Push(SC *s, char oper) { SC *p = (SC*)malloc(sizeof(SC)); p->oper = oper; p->next = s; return p; } /***********FUN:SC类型的指针出栈**************/ SC *Pop(SC *s) { SC *q = s; s = s->next; free(q); return s; } /**********FUN:SF类型的指针入栈,返回p********/ SD *Push(SD *s, double num) { SD *p = (SD*)malloc(sizeof(SD)); p->num = num; p->next = s; return p; } /**************FUN:SF类型的指针出栈**********/ SD *Pop(SD *s) { SD *q = s; s = s->next; free(q); return s; } /****************FUN:计算 aθb 的逻辑操作****************/ double Calculator(double a, unsigned char theta, double b) { switch (theta) { case '+': return a + b; case '-': return a - b; case '*': return a*b; case '/': return a / b; case '^': return pow(a, b); default: return 0; } } /***********Fun:判断输入运算符是否为8种标准运算符********/ Status Judge(char Test, char *TestOp) { int i; int Find = false; for (i = 0; i< OPSETSIZE; i++) { if (Test == TestOp[i]) Find = true; } return Find; } /**************Fun:返回输入运算符的设定数值**************/ Status ReturnOpOrd(char oper, char *TestOp) { int i; for (i = 0; i< OPSETSIZE; i++) { if (oper == TestOp[i]) return i; } } /**********FUN:比较运算符优先级**********/ char Precede(char Aop, char Bop) { return Prior[ReturnOpOrd(Aop, OPSET)][ReturnOpOrd(Bop, OPSET)]; } /*************FUN:表达式求值*************/ double EvaluateExpression(char* Expression) { // OPTR和OPND分别为运算符栈和运算数栈,OP为运算符集合 SC *OPTR = NULL; // 运算符栈,字符元素 SD *OPND = NULL; // 运算数栈,实数元素 char TempData[20] = ""; // 以字符形式临时存储数据 double Data, a, b; char pc[50] = "", *c; char theta, Dr[] = { '#', '\0' }; c = pc; OPTR = Push(OPTR, '#'); //起始符#入栈 *c = strcat_s(Expression, sizeof(Expression), Dr); //表达式追加尾部# while (*c != '#' || OPTR->oper != '#') { if (!Judge(*c, OPSET)) { Dr[0] = *c; strcat_s(TempData, sizeof(TempData), Dr); //字符串连接函数 c++; if (Judge(*c, OPSET)) { Data = (double)atof(TempData); //字符串转换函数 OPND = Push(OPND, Data); strcpy_s(TempData,sizeof(TempData)," \0"); //清空临时存放数据的字符串 } } else // 不是运算符则进栈 { switch (Precede(OPTR->oper, *c)) { case '<': // 栈顶元素优先级低 OPTR = Push(OPTR, *c); c++; break; case '=': // 脱括号并接收下一字符 OPTR = Pop(OPTR); c++; break; case '>': // 退栈并将运算结果入栈 theta = OPTR->oper; OPTR = Pop(OPTR); b = OPND->num; OPND = Pop(OPND); a = OPND->num; OPND = Pop(OPND); OPND = Push(OPND, Calculator(a, theta, b)); break; } } } return OPND->num; } int main(void) { char s[128]; puts("请输入表达式:"); gets_s(s); puts("该表达式的值为:"); printf("%s =%lf\n", s, EvaluateExpression(s)); system("pause"); //Press any key to exit return 0; }

C语言数据结构顺序表,存储空间已满,增加分配

/* 当前存储空间已满,增加分配 */ newbase=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType)); 这句怎么改为用new表达? newbase=new //怎么写这句

关于c语言数据结构的问题

因为之前我们学的数据结构是c++版的, 今天无意接触到c语言版的数据结构,发现里面的函数时这样写的 Status Pop(SqStack &s,SElement &e);我想问一下这样不是可以理解为引用传参吗? 但是c语言是不支持引用传参的,求大佬指点一下

C语言数据结构 有向图

对任意一个有向图完成如下操作: 建立邻接链表 计算任意顶点的出度和入度 根据邻接表建立逆邻接表 遍历并输出经过的边。

C语言建立一个结构体索引

定义了一个学生信息结构体,怎么建立一个链表实现以Sno学生学号为索引,把一个学生的信息关联起来作为一个整体,实现对这一个学生信息的增删查找? ``` struct Student //定义基本表——Student { long long int Sno; //学生学号 char Sname[20]; //学生姓名 char Ssex[6]; //学生性别 int Sage; //学生年龄 char Sdept[15]; //学生所在系 STUDENT_DEF *next; }; ```

c语言学习数据结构和算法有什么好书推荐吗?

c语言学习数据结构和算法有什么好书推荐吗? 求大神告知一下,谢谢了

c语言数据结构中单链表取值

Status GetElem(linklist l,int i,elemtype &e) p=l->next; j=1; while(p&&j<1) { ......... } ........ e=p->data; ........... 为什么定义elemtype &e,用e返回数据,直接定义elemtype e,用e返回不行么?

C语言 数据结构内存布局问题

struct A { char e; short f; }; struct B { int a; char b; struct A c; char d; }; sizeof(struct B); 为什么是12? struct A { char e; int f; }; struct B { int a; char b; struct A c; char d; }; sizeof(struct B);为什么是20? 求大牛解释解释 在线等。

数据结构c语言编程问题

用数据结构c语言编写一段程序。设一个顺序链表L,插入一个x,保持该表的有序性

C语言数据结构课程设计实现一个集合数据结构

题目:设计并实现一个集合数据结构Set。一个集合中没有重复元素,支持下列运算: boolean add(E o) 如果 set 中尚未存在指定的元素o,则添加此元素。 boolean addAll(Set c) 如果 set 中没有指定集合c中的所有元素,则将其添加到此 set 中。 void clear() 移除 set 中的所有元素。 boolean contains(E o) 如果 set 包含指定的元素o,则返回 true。 boolean containsAll(Set c) 如果此 set 包含指定集合c中的所有元素,则返回 true。 boolean isEmpty() 如果 set 不包含元素,则返回 true。 boolean remove(E o) 如果 set 中存在指定的元素o,则将其移除。 boolean removeAll(Set c) 移除 set 中那些包含在指定集合c中的元素。 boolean retainAll(Set c) 仅保留 set 中那些包含在集合c中的元素。 Set union(Set c) 返回将当前集合与集合c进行并运算得到的集合。 Set differ(Set c) 返回将当前集合与集合c进行差运算得到的集合。 Set intersection (Set c) 返回将当前集合与集合c进行交并运算得到的集合。 int size() 返回 set 中的元素数(其容量)。 E[] toArray() 返回包含此 set 中所有元素的数组

数据结构课程设计用C语言做

据结构课程设计。包含word,或txt文档阅读。 读的“内容”,请保存到任意一门课上所讲的表中。可以是sqlist,LinkList,sqstack,queue等要求能用逗号句号分行显示并且输入1 2 3 4 可以对应显示每行的内容

c语言存储链表数据问题

给你一个链表的头指针pHead,将一个结构体中的数据,比如: struct{ int num; char name[20]; char sex[10]; } 存储到磁盘中,然后下次启动程序之后又可以读取出来。 初次学习c语言,麻烦给出代码,谢谢

c语言数据结构,求算法

把一个单链表LA中的奇数项和偶数项分开,分别放在两个单链表LB,LC中(要求利用原空间,头结点空间可另外开辟)

用C语言解决数据结构的背包问题

求大神解答…在此谢谢比较急…希望大家能够帮帮忙哇…这是我们的课程设计不怎么会 ![图片说明](https://img-ask.csdn.net/upload/201506/26/1435325726_263981.png)![图片说明](https://img-ask.csdn.net/upload/201506/26/1435325684_322273.png)

程序员的兼职技能课

获取讲师答疑方式: 在付费视频第一节(触摸命令_ALL)片头有二维码及加群流程介绍 限时福利 原价99元,今日仅需39元!购课添加小助手(微信号:csdn590)按提示还可领取价值800元的编程大礼包! 讲师介绍: 苏奕嘉&nbsp;前阿里UC项目工程师 脚本开发平台官方认证满级(六级)开发者。 我将如何教会你通过【定制脚本】赚到你人生的第一桶金? 零基础程序定制脚本开发课程,是完全针对零脚本开发经验的小白而设计,课程内容共分为3大阶段: ①前期将带你掌握Q开发语言和界面交互开发能力; ②中期通过实战来制作有具体需求的定制脚本; ③后期将解锁脚本的更高阶玩法,打通任督二脉; ④应用定制脚本合法赚取额外收入的完整经验分享,带你通过程序定制脚本开发这项副业,赚取到你的第一桶金!

Windows版YOLOv4目标检测实战:训练自己的数据集

课程演示环境:Windows10; cuda 10.2; cudnn7.6.5; Python3.7; VisualStudio2019; OpenCV3.4 需要学习ubuntu系统上YOLOv4的同学请前往:《YOLOv4目标检测实战:训练自己的数据集》 课程链接:https://edu.csdn.net/course/detail/28745 YOLOv4来了!速度和精度双提升! 与 YOLOv3 相比,新版本的 AP (精度)和 FPS (每秒帧率)分别提高了 10% 和 12%。 YOLO系列是基于深度学习的端到端实时目标检测方法。本课程将手把手地教大家使用labelImg标注和使用YOLOv4训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。 本课程的YOLOv4使用AlexyAB/darknet,在Windows系统上做项目演示。包括:安装软件环境、安装YOLOv4、标注自己的数据集、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算)和先验框聚类分析。还将介绍改善YOLOv4目标检测性能的技巧。 除本课程《Windows版YOLOv4目标检测实战:训练自己的数据集》外,本人将推出有关YOLOv4目标检测的系列课程。请持续关注该系列的其它视频课程,包括: 《Windows版YOLOv4目标检测实战:人脸口罩佩戴检测》 《Windows版YOLOv4目标检测实战:中国交通标志识别》 《Windows版YOLOv4目标检测:原理与源码解析》

lena全身原图(非256*256版本,而是全身原图)

lena全身原图(非256*256版本,而是全身原图) lena原图很有意思,我们通常所用的256*256图片是在lena原图上截取了头部部分的256*256正方形得到的. 原图是花花公子杂志上的一个

快速入门Android开发 视频 教程 android studio

这是一门快速入门Android开发课程,顾名思义是让大家能快速入门Android开发。 学完能让你学会如下知识点: Android的发展历程 搭建Java开发环境 搭建Android开发环境 Android Studio基础使用方法 Android Studio创建项目 项目运行到模拟器 项目运行到真实手机 Android中常用控件 排查开发中的错误 Android中请求网络 常用Android开发命令 快速入门Gradle构建系统 项目实战:看美图 常用Android Studio使用技巧 项目签名打包 如何上架市场

Java调用微信支付

Java 使用微信支付 一. 准备工作 1.

汽车租赁管理系统需求分析规格说明书

汽车租赁管理系统需求分析规格说明书,这只是一个模板,如果有不会的可以借鉴一下,还是蛮详细的。。。。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

程序员的算法通关课:知己知彼(第一季)

【超实用课程内容】 程序员对于算法一直又爱又恨!特别是在求职面试时,算法类问题绝对是不可逃避的提问点!本门课程作为算法面试系列的第一季,会从“知己知彼”的角度,聊聊关于算法面试的那些事~ 【哪些人适合学习这门课程?】 求职中的开发者,对于面试算法阶段缺少经验 想了解实际工作中算法相关知识 在职程序员,算法基础薄弱,急需充电 【超人气讲师】 孙秀洋&nbsp;| 服务器端工程师 硕士毕业于哈工大计算机科学与技术专业,ACM亚洲区赛铜奖获得者,先后在腾讯和百度从事一线技术研发,对算法和后端技术有深刻见解。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27272 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程无限观看时长,但是大家可以抓紧时间学习后一起讨论哦~

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

Python入门视频精讲

Python入门视频培训课程以通俗易懂的方式讲解Python核心技术,Python基础,Python入门。适合初学者的教程,让你少走弯路! 课程内容包括:1.Python简介和安装 、2.第一个Python程序、PyCharm的使用 、3.Python基础、4.函数、5.高级特性、6.面向对象、7.模块、8.异常处理和IO操作、9.访问数据库MySQL。教学全程采用笔记+代码案例的形式讲解,通俗易懂!!!

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

Java62数据提取代码

利用苹果手机微信下面的wx.data文件提取出62数据,通过62可以实现不同设备直接登陆,可以通过文件流的方式用脚本上传到服务器进行解析

Python代码实现飞机大战

文章目录经典飞机大战一.游戏设定二.我方飞机三.敌方飞机四.发射子弹五.发放补给包六.主模块 经典飞机大战 源代码以及素材资料(图片,音频)可从下面的github中下载: 飞机大战源代码以及素材资料github项目地址链接 ————————————————————————————————————————————————————————— 不知道大家有没有打过飞机,喜不喜欢打飞机。当我第一次接触这个东西的时候,我的内心是被震撼到的。第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每

2018年全国大学生计算机技能应用大赛决赛 大题

2018年全国大学生计算机技能应用大赛决赛大题,程序填空和程序设计(侵删)

Lena图像处理测试专业用图,高清完整全身原图

Lena图像处理测试专业用图,高清完整全身原图,该图片很好的包含了平坦区域、阴影和纹理等细节,这些都有益于测试各种不同的图像处理算法。它是一幅很好的测试照片!其次,由于这是一个非常有魅力女人的照片。

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

verilog实现地铁系统售票

使用 verilog 实现地铁售票

Python+OpenCV计算机视觉

Python+OpenCV计算机视觉系统全面的介绍。

Python可以这样学(第四季:数据分析与科学计算可视化)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,在教材基础上又增加了大量内容,通过实例讲解numpy、scipy、pandas、statistics、matplotlib等标准库和扩展库用法。

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

获取Linux下Ftp目录树并逐步绑定到treeview

在linux下抓取目录树,双击后获取该节点子节点(逐步生成)。另外有两个类,一个是windows下的(一次性获取目录树),一个是linux下的(足部获取目录树)

YOLOv3目标检测实战系列课程

《YOLOv3目标检测实战系列课程》旨在帮助大家掌握YOLOv3目标检测的训练、原理、源码与网络模型改进方法。 本课程的YOLOv3使用原作darknet(c语言编写),在Ubuntu系统上做项目演示。 本系列课程包括三门课: (1)《YOLOv3目标检测实战:训练自己的数据集》 包括:安装darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 (2)《YOLOv3目标检测:原理与源码解析》讲解YOLOv1、YOLOv2、YOLOv3的原理、程序流程并解析各层的源码。 (3)《YOLOv3目标检测:网络模型改进方法》讲解YOLOv3的改进方法,包括改进1:不显示指定类别目标的方法 (增加功能) ;改进2:合并BN层到卷积层 (加快推理速度) ; 改进3:使用GIoU指标和损失函数 (提高检测精度) ;改进4:tiny YOLOv3 (简化网络模型)并介绍 AlexeyAB/darknet项目。

手把手实现Java图书管理系统(附源码)

【超实用课程内容】 本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。详细介绍了图书管理系统的实现,包括:环境搭建、系统业务、技术实现、项目运行、功能演示、系统扩展等,以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27513 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化

微信小程序开发实战之番茄时钟开发

微信小程序番茄时钟视频教程,本课程将带着各位学员开发一个小程序初级实战类项目,针对只看过官方文档而又无从下手的开发者来说,可以作为一个较好的练手项目,对于有小程序开发经验的开发者而言,可以更好加深对小程序各类组件和API 的理解,为更深层次高难度的项目做铺垫。

Java 最常见的 200+ 面试题:面试必备

这份面试清单是从我 2015 年做了 TeamLeader 之后开始收集的,一方面是给公司招聘用,另一方面是想用它来挖掘在 Java 技术栈中,还有那些知识点是我不知道的,我想找到这些技术盲点,然后修复它,以此来提高自己的技术水平。虽然我是从 2009 年就开始参加编程工作了,但我依旧觉得自己现在要学的东西很多,并且学习这些知识,让我很有成就感和满足感,那所以何乐而不为呢? 说回面试的事,这份面试...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

微信小程序 实例汇总 完整项目源代码

微信小程序 实例汇总 完整项目源代码

基于西门子S7—1200的单部六层电梯设计程序,1部6层电梯

基于西门子S7—1200的单部六层电梯设计程序,1部6层电梯。 本系统控制六层电梯, 采用集选控制方式。 为了完成设定的控制任务, 主要根据电梯输入/输出点数确定PLC 的机型。 根据电梯控制的要求,

相关热词 c#中如何设置提交按钮 c#帮助怎么用 c# 读取合并单元格的值 c#带阻程序 c# 替换span内容 c# rpc c#控制台点阵字输出 c#do while循环 c#调用dll多线程 c#找出两个集合不同的
立即提问