Ⅰ c语言,删除指定段节点函数。
p1 = head;
p = head->next;
while(p->next != NULL)//当链表下个节点不是末尾时
{
if((p->number < mink)||(p->number > maxk))//如果节点值不满足条件,则删除该节点
{
p = p->next;
p1->next = p;
}
else //寻找下一个节点
{
p =p->next;
p1 = p1->next;
}
}
Ⅱ C语言的删除函数
1、用remove函数
功 能: 删除一个文件
用 法: int remove( const char *filename);
头文件:在Visual C++ 6.0中可以用stdio.h
返回值:如果删除成功,remove返回0,否则返回EOF(-1)。
2、例程(1.txt在程序目录下):
#include<stdio.h>
intmain()
{
if(remove("1.txt"))
printf("Couldnotdeletethefile&s ","1.txt");
elseprintf("OK ");
return0;
}
Ⅲ c语言怎样删除main
在C语言中win32程序运行的入口是main(),如果你写1些.dll、.lib文件,就只需要写导出函数便可,不需要写main()。很多可履行程序都是在main()函数中写1些调用其他程序的代码。再隐藏黑窗口。还有1些情况是使用MFC、QT等gui程序,就不需要main()函数作为入口。总之,main()函数是根据自己需要来选择是不是使用,没有删不删除之说。对建立好的win32程序来讲没有main()是不行的。
Ⅳ c语言中如何对文件的部分内容删除
1、建立一个.c或者.cpp文件,还要建立一个.txt文件进行操作处理,并且写上c语言的编译预处理,头文件,主函数。
Ⅳ 求C语言删除函数运行说明
void del()
{
STU a[20]; char tname[20];
int i=0,j,n=0;
FILE *fp;
printf("\t\t\t请输入要删除的姓名:");
scanf("%s",tname);
/*****以下内容是读取文件信息,并将文件中的信息与用户输入的姓名做比较,如果姓名相同,则删除该学生信息***/
if((fp=fopen("e:\\file1","rb"))==NULL) //打开文件file1
{printf("error!\n");exit(0);} //打开失败,报错并退出系统
while(fread(&a[n],sizeof(STU),1,fp)!=0) //打开成功,每次从文件中读入一个STU结构大小的数据,并将其存入数组a[]中。直到文件内容结束。
n++;
/**该循环用于查找**/
for(i=0;i<n;i++)
if(strcmp(a[i].name,tname)==0) break; //找到姓名相同的学生了,结束循环。
if(i==n) //找完一遍,没找到
{ printf("\t\t\t没有找到!\n");
fclose(fp); //关闭文件file1
}
else //找到了同姓名的学生
{
/**该循环用于删除该学生信息**/
for(j=i;j<n-1;j++) //从找到该学生的位置开始,依次把后面的数据前移,覆盖掉前一个
{
a[j]=a[j+1];
}
n=n-1; //学生总数减1
/****以下内容是更新文件,并提示用户删除成功****/
if((fp=fopen("e:\\file1","wb"))==NULL) //再次打开文件file1,把删除之后的信息保存到文件中
{printf("error!\n");exit(0);}
fwrite(a,sizeof(STU),n,fp); //每次往文件中写入一个学生的信息(即一个STU大小)
fclose(fp);
printf("\t\t\t删除成功!\n");
system("pause"); //页面显示诸如“按任意键继续……”
}
}
Ⅵ C语言编写一个插入删除函数
一般呢,插入和删除函数是分开写的,还有分成两种存储结构,1.顺序表,2.链表,我给你一个我上数据结构时候写的链表的操作,里面全都有,如果不会用,追问我
#include<stdio.h>
#include<malloc.h>
#include<Windows.h>
#include<conio.h>
#include<stdlib.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;
return L;
}
int GetElem_L(LNode *L, int i, int *e)//取第i个元素
{
int j;
LNode *p;
p=L->next;j=1;
while(p&&j<i)
{
p=p->next;++j;
}
if(!p||j>i) return 0;//i超过表长
*e=p->data;
return 1;
}
int ListInsert_L(LNode *L, int i, int e)//插入数据元素
{
LNode *p1 = L,*p2=L;
int j = 0;
if (i-1 > LinkLength(L))
return 2;
while(p1!=NULL && j<i-1)
{
p1 = p1->next;
j++;
}
p2 = (LNode *)malloc(sizeof(LNode));
if (!p2)
return 0;
p2->data = e;
p2->next = p1->next;
p1->next = p2;
return 1;
}
void ClearList(LNode *L)//重置为空表
{
LNode *p;
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)
{
printf("%5d", p->data);
p = p->next;
}
}
int ListDlete_L(LNode *L, int i, int *e)//删除L中I,并用e返回
{
int j = 0;
LNode *p1 = NULL, *p2 = NULL;
p1 = L;
while (p1->next != NULL && j < i - 1)
{
p1 = p1->next;
j++;
}
if (p1->next == NULL || j > i - 1)
return 0;
p2 = p1->next;
p1->next = p2->next;
free(p2);
return 1;
}
int LinkLength(LNode *L)//链表的长度
{
int i = 0;
LNode *p = L->next;
while (p != NULL)
{
i++;
p = p->next;
}
return i;
}
Ⅶ 求大神,关于c语言删除函数
1. 函数开始的时候这两句话没有意义
p=(stud *)malloc(sizeof(stud));
q=(stud *)malloc(sizeof(stud));
你只是用了这两个指针,为它们分配空间一是没必要,二是内存会泄露
2. 看你的代码应该是有头结点的链表,搜索的时候p=head;p初始化为了head,指向了头结点,搜索的时候应该从p->next开始,而你用的while((p!=NULL)&&(strcmp(p->name,N)!=0)),应该用p->next!=NULL。而且后面删除的时候也删除的是p->next,所以比较的话也应该用p->next:strcmp(p->next->name,N)
Ⅷ C语言数组删除函数删除不了
两种做法
1 数组a[]设为全局变量
#include<stdio.h>
#include<stdlib.h>
inta[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
voiddelete1(intx)
{
inti;
for(i=x;i<20;i++)
a[i]=a[i+1];
}
intmain()
{
inti,x;
printf("请输入要删除的学生学号:");
scanf_s("%d",&x);
delete1(x);
for(i=0;i<20;i++)
printf("%d ",a[i]);
system("pause");
return0;
}
2 delete1函数增加一个参数,用于传入待处理的数组
#include<stdio.h>
#include<stdlib.h>
voiddelete1(intx,inta[])
{
inti;
for(i=x;i<20;i++)
{
if(i+1==20)
{
a[i]=0;
}
else
{
a[i]=a[i+1];
}
}
}
intmain()
{
inta[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20},i,x;
printf("请输入要删除的学生学号:");
scanf_s("%d",&x);
delete1(x,a);
for(i=0;i<20;i++)
printf("%d ",a[i]);
system("pause");
return0;
少年,自行选一个吧,总有一款你喜欢的
Ⅸ 怎么用C语言编写一个删除函数删除信息啊
楼上两位说的free只适用于链表
如果用数组 free不行
你可以用覆盖的方法来删除信息 用一条其他新赋值给要被删除的信息
比如a,b都是结构体变量 要删除a可以这样 a=b;