Ⅰ 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;