#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include <string.h>
typedef struct entry
{
int num;
char name[20];
char sex[5];
int age;
struct entry *next;
}entry_s;
typedef struct entry_list
{
int index;
entry_s *entry_head;
}entry_list_s;
entry_list_s *entry = NULL;
int add_entry(entry_s *tmp_entry)
{
entry_s *new_entry;
entry_s *entry_ptr = entry->entry_head;
if(NULL == tmp_entry)
{
printf("entry is NULL!\n");
return -1;
}
new_entry = (entry_s *)malloc(sizeof(entry_s));
memcpy(new_entry, tmp_entry, sizeof(entry_s));
entry->index++;
if(NULL == entry_ptr)
{
entry->entry_head = new_entry;
new_entry->next = NULL;
return 0;
}
while(NULL != entry_ptr->next)
{
entry_ptr = entry_ptr->next;
}
entry_ptr->next = new_entry;
new_entry->next = NULL;
return 0;
}
void print_entry(void)
{
entry_s *it_entry = entry->entry_head;
while(NULL != it_entry)
{
printf("==============================\n");
printf("num: %d\n", it_entry->num);
printf("name: %s\n", it_entry->name);
printf("sex: %s\n", it_entry->sex);
printf("age: %d\n", it_entry->age);
printf("==============================\n\n");
it_entry = it_entry->next;
}
printf("total num: %d\n", entry->index);
return;
}
void delet_entry(int num)
{
entry_s *entry_p = entry->entry_head;
entry_s *entry_q = entry->entry_head->next;
if((NULL != entry_p) && (entry_p->num == num))
{
entry->entry_head = entry_q;
free(entry_p);
entry_p = NULL;
entry->index--;
return;
}
while(NULL != entry_q)
{
if(entry_q->num == num)
{
entry_p->next = entry_q->next;
free(entry_q);
entry_q = NULL;
entry->index--;
return;
}
else
{
entry_p = entry_q;
entry_q = entry_q->next;
}
}
return;
}
int main()
{
entry_s inner_entry;
printf("main\n");
entry = (entry_list_s *)malloc(sizeof(entry_list_s));
entry->index = 0;
entry->entry_head = NULL;
inner_entry.num = 0;
strcpy(inner_entry.name, "aaaaa");
strcpy(inner_entry.sex, "male");
inner_entry.age = 15;
add_entry(&inner_entry);
inner_entry.num = 1;
strcpy(inner_entry.name, "bbbbb");
strcpy(inner_entry.sex, "male");
inner_entry.age = 19;
add_entry(&inner_entry);
inner_entry.num = 2;
strcpy(inner_entry.name, "ccccc");
strcpy(inner_entry.sex, "female");
inner_entry.age = 41;
add_entry(&inner_entry);
inner_entry.num = 3;
strcpy(inner_entry.name, "ddddd");
strcpy(inner_entry.sex, "female");
inner_entry.age = 23;
add_entry(&inner_entry);
//print_entry();
delet_entry(0);
print_entry();
free(entry);
return 0;
}
C语言链表操作
最新推荐文章于 2022-08-29 14:49:54 发布