网站首页 > 文章中心 > 其它

c语言的结构体函数删除

作者:小编 更新时间:2023-08-16 18:41:09 浏览量:128人看过

C语言编写一个插入删除函数

#includestdio.h

#includemalloc.h

c语言的结构体函数删除-图1

#includeWindows.h

#includeconio.h

#includestdlib.h

typedef struct

{

int data;

struct LNode *next;

}LNode;

LNode *Listinit(LNode *L)//初始化链表返还头指针

L = (LNode *)malloc(sizeof(LNode));

if (!L)return 0;

L-next = NULL;

c语言的结构体函数删除-图2

return L;

}

int GetElem_L(LNode *L, int i, int *e)//取第i个元素

int j;

LNode *p;

p=L-next;j=1;

while(pji)

p=p-next;++j;

if(!p||ji) return 0;//i超过表长

*e=p-data;

return 1;

int ListInsert_L(LNode *L, int i, int e)//插入数据元素

int j = 0;

if (i-1 LinkLength(L))

while(p1!=NULL ji-1)

p1 = p1-next;

j++;

return 0;

void ClearList(LNode *L)//重置为空表

while(L-next)

p=L-next;

L-next=p-next;

free(p);

void print_link(LNode *L)//输出函数

LNode *p = L;

p = p-next;

while (p != NULL)

int ListDlete_L(LNode *L, int i, int *e)//删除L中I,并用e返回

p1 = L;

while (p1-next != NULL j i - 1)

if (p1-next == NULL || j i - 1)

int LinkLength(LNode *L)//链表的长度

int i = 0;

LNode *p = L-next;

i++;

return i;

col_num--;这两句代码出错

删除列的算法错了,应该紧缩数据把数据按每行col_num数据前移,把空出来的空间放在最后这样计算位置就不会出错了否则总列数并没变,你那个col_num--就会出问题了.行数当然维持不变了!

在C语言中,怎么删除一个结构体数组中的数据?

高分求助,C语言中关于结构体数组中,学生信息的删除

void del(void)

FILE *fp;

char a[10];

char ch;

int i,j,k;

system("cls");

printf("请输入要删除的学生姓名:");

scanf("%s",a);

fp=fopen("F:\\x.txt","r");

for(i=0;icount;i++)//找到删除人所在的位置

if(!strcmp(s[i].name ,a))

printf(" \t\t\t该同学的信息已成功删除!\n");

printf("\n");

break;

fclose(fp);

if(i==count)

printf("\t\t很抱歉,没有您所要查找的同学记录!\n");

else

for(j=i;jcount-1;j++)

for(k=0;k10;k++)

s[j].name[k]=s[j+1].name[k];

s[j].no=s[j+1].no;

fp=fopen("F:\\x.txt","w");

fp=fopen("F:\\x.txt","a");

count=count-1;

这是我以前做的时候的代码,基本思想已经有了,将学籍信息从文件载入到结构体中,就是找到要删除的同学所在的位置,然后从该同学后面将其他人的信息依次向前挪一个,实现对该同学信息的覆盖.最后再将修改后的信息在重新存到文件中.

将文件中的内容读到结构体中时一开始就做了.设置了一个全局变量count,用于记录动态变化的学生的人数,每次操作完成后将count的值写到另一个文件夹中.每次程序开始执行时也要读入count 的值.

C语言结构体指针 删除函数 为什么删除后会显示0? 麻烦各位大神速度指点一下~~

void Delete() { //删除信息函数

fp = fopen("student.txt","r");//默认以文本方式打开

char choose;

p = s1;

fread(p,sizeof(Student),1,fp);// 块状读取文本文件是不合适的

printf("请输入删除学生姓名:");

scanf("%s",name);

while(strcmp(name,p-Name) p) //判断该学生信息是否存在

p++;i++; if(p != NULL) {

fp = fopen("student.txt","w");//默认以文本方式打开,fp已经用作文件student.txt,

printf("\n是否删除(Y/N)");

scanf("%s",choose); // choose是char变量,应该用"%c"读取

if(choose=='y'||choose=='Y') {

for(i = i;i N;i++) {

s1[i] = s1[i + 1]; // 这里删除的是第一条记录,不一定是要删除的那一条

} printf("删除成功!\n");

fwrite(p,sizeof(struct Student),1,fp);// 块状写文本文件是不合适的

else printf("没有此人信息.");

scanf("%s",choose); // 还是老问题

if(choose=='1') Menu();

.................

C语言程序,怎么在结构体链表中插入或者删除某个结构体?

没学过数据结构?那你们老师在干嘛?数据结构不应该是和语言同步进行的吗?

struct A //这就是个结构体,包含数据域和指针域

int a;//数据域,可以是任何类百型的.

char b;//数据域

A *p;//指针域,就是struct A类型.

};链表,一般是动态的.你要静态的就不用malloc分配就行了.定义N个struct

A就行了.

struct A a1;

//a1作为第一个节点

以上就是土嘎嘎小编为大家整理的c语言的结构体函数删除相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章