또 한 번 시계를 썼다
#include
#include
#include
typedef enum{FALSE, TRUE, ERROR} BOOL;
typedef struct _Data
{
int id;
char *name;
}Data;
typedef struct _Node
{
Data data;
struct _Node *next;
}Node;
Node *CreateHead(Node **node)
{
if(NULL == node)
{
return NULL;
}
Node *head = (Node *)malloc(sizeof(Node)/sizeof(char));
if(NULL == head)
{
// head
return NULL;
}
head->data.name = (char *)malloc(sizeof(char)*15);
if(head->data.name == NULL)
{
// name
free(head);
return NULL;
}
head->data.id = 0;
strcpy(head->data.name,"head");
head->next = NULL;
*node = head;
return head;
}
BOOL Insert_tail(Node *head, Data data)
{
if(NULL == head)
{
return ERROR;
}
Node *node = (Node *)malloc(sizeof(Node)/sizeof(char));
if(NULL == node)
{
return ERROR;
}
node->data.name = (char *)malloc(sizeof(char)*15);
node->data.id = data.id;
stpcpy(node->data.name, data.name);
node->next = NULL;
Node *tmp = head;
while(tmp->next != NULL)
{
tmp = tmp->next;
}
tmp->next = node;
return TRUE;
}
void Print_Data(Data data)
{
printf("id = %-4d,name = %s
", data.id, data.name);
}
void Display(Node *head)
{
if(NULL == head)
return ;
Node *tmp = head->next;
while(tmp != NULL)
{
Print_Data(tmp->data);
tmp = tmp->next;
}
}
BOOL Delete_Data(Node *head, Data data)
{
if(NULL == head)
return ERROR;
Node *tmp = head;
while(tmp->next != NULL)
{
if(strcmp(tmp->next->data.name, data.name) == 0)
{
Node *p = tmp->next;
tmp->next = p->next;
free(p->data.name);
free(p);
return FALSE;
}
tmp = tmp->next;
}
return TRUE;
}
BOOL Updata_Data(Node *head, Data data)
{
if(NULL == head)
{
return ERROR;
}
Node *tmp = head;
while(tmp->next != NULL)
{
if(strcmp(tmp->next->data.name, data.name) == 0)
{
printf(" :");
scanf("%s", tmp->next->data.name);
printf("
");
return TRUE;
}
tmp = tmp->next;
}
}
int Length(Node *head)
{
if(NULL == head)
{
return -1;
}
int length = 0;
Node *tmp = head;
while(tmp->next != NULL)
{
length++;
tmp = tmp->next;
}
return length;
}
void Reverse(Node *head)
{
if(NULL == head || NULL == head->next || NULL == head->next->next)
{
return ;
}
Node *pre = head->next;
Node *cur = pre->next;
Node *tmp = cur->next;
while(cur != NULL)
{
tmp = cur->next;
cur->next = pre;
pre = cur;
cur = tmp;
}
head->next->next = NULL;
head->next = pre;
}
int main()
{
Node *head2 = NULL;
Node *head1 = CreateHead(&head2);
if(NULL == head1)
{
printf("head1
");
}
if(NULL == head2)
{
printf("head2
");
}
Data data1;
data1.id = 1;
data1.name = (char *)malloc(sizeof(char)*15);
strcpy(data1.name, "zoujie");
Data data2;
data2.id = 2;
char name2[15] = "luzhiwei";
data2.name = name2;
Insert_tail(head1, data1);
Display(head1);
printf("1--------------------------
");
Insert_tail(head1, data2);
Display(head1);
printf("length = %d
", Length(head1));
printf("2--------------------------
");
Reverse(head1);
Display(head1);
printf("3--------------------------
");
Delete_Data(head1, data1);
Display(head1);
printf("4--------------------------
");
Updata_Data(head1, data2);
Display(head1);
printf("length = %d
", Length(head1));
printf("5--------------------------
");
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.