查看: 1024|回复: 5
|
C Programming:Linked List 如何delete指定的record??
[复制链接]
|
|
我在研究着C语言,有不明白的地方想问:
typedef struct job //self-referential structure
{
char id[5];
int priority;
int length;
char description[100];
struct job *next;
}JOB;
void main()
{
JOB * addNewJob(JOB *);
void del(JOB *),view(JOB *);
int choice;
char pause;
JOB *start;
start=NULL;
.
.
.
.
}
.
我做了Linked List,完成了insert的function,insert过后,但不懂如何delete指定的record,不清楚怎样用 free();
下面是试做,只delete到指定record里 id 一项,其它保留没被洗掉:
void del(JOB *start)
{
JOB *curr, tempPtr;
char tempID[5];
printf("Enter the ID that you want to delete: \n" ;
gets(tempID);fflush(stdin);
for(curr=start;curr!=NULL;curr=curr->next)
{
printf("%p ,curr in del loop \n\n",curr);
if( 0 == strcmp(curr->id,tempID))
break;
}
tempPtr = *curr; //testing
free(tempPtr);
}
有哪位大大可教我吗?谢谢  |
|
|
|
|
|
|
|
发表于 11-8-2006 10:52 AM
|
显示全部楼层
回复 #1 crovoseas 的帖子
把你的其他function也放上來看看? |
|
|
|
|
|
|
|
发表于 11-8-2006 12:00 PM
|
显示全部楼层
void del(JOB *start)<<首先你parameter要有你要delete的item
{
JOB *curr, tempPtr;
char tempID[5];
printf("Enter the ID that you want to delete: \n";
gets(tempID);fflush(stdin);
for(curr=start;curr!=NULL;curr=curr->next)
{
printf("%p ,curr in del loop \n\n",curr);
if( 0 == strcmp(curr->id,tempID)) <<--
我很奇怪你stop的时候是用什么parameter来stop的,不是需要ID of the item that you wanna delete 吗? break;
}
tempPtr = *curr; //testing
free(tempPtr);
} |
|
|
|
|
|
|
|
发表于 11-8-2006 12:30 PM
|
显示全部楼层
回复 #3 haroldlbc 的帖子
for(curr=start;curr!=NULL;curr=curr->next)
{
printf("%p ,curr in del loop \n\n",curr);
if( 0 == strcmp(curr->id,tempID)) <<--
我很奇怪你stop的时候是用什么parameter来stop的,不是需要ID of the item that you wanna delete 吗? break;
}
这一段没问题,因为他有让user enter search的id。。。所以不需要parameter。。
printf("Enter the ID that you want to delete: \n" );
gets(tempID);fflush(stdin);
回复 #1 crovoseas 的帖子
这个应该会有compile error吧? free的parameter需要用pointer。。。
应该,还需要previous pointer之类的东西。。。
pre->next = curr->next;
free(curr);
希望,我没教错。。。几年没用link list了。。。 |
|
|
|
|
|
|
|
发表于 11-8-2006 12:45 PM
|
显示全部楼层
原帖由 meemee 于 11-8-2006 12:30 PM 发表
回复 #3 haroldlbc 的帖子
这一段没问题,因为他有让user enter search的id。。。所以不需要parameter。。
回复 #1 crovoseas 的帖子
这个应该会有compile error吧? free的parameter需要用pointe ...
嗯,差不多忘记了。
因为这是考试用的知识。 |
|
|
|
|
|
|
|

楼主 |
发表于 13-8-2006 12:06 AM
|
显示全部楼层
|
|
|
|
|
|
| |
本周最热论坛帖子
|