#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LEN sizeof(Node)
typedef struct Node
{
char name[10];
struct Node *next;
struct Node *prev;
}Node,*LinkList;
struct Node *head = NULL;
void InitList()
{
if(head == NULL)
{
head = (LinkList)malloc(LEN);
head -> next = head;
head -> prev = head;
}
}
void CreateList()
{
LinkList p = head;
LinkList q = (LinkList)malloc(LEN);
printf("Please input name:");
scanf("%s",q -> name);
/* while(p -> next != head)
{
p = p -> next;
}
q -> next = head;
p -> next = q;//head -> prev -> next
q -> prev = p;//head -> prev
head -> prev = q;*/
q -> next = head;
head -> prev -> next = q;
q -> prev = head -> prev;
head -> prev = q;
}
void DeleteList()
{
LinkList p = head -> next;
char name[10];
printf("Please input delete name:");
scanf("%s",name);
while(p != head)
{
if(strcmp(p -> name,name) == 0)
{
p -> prev -> next = p -> next;
p -> next -> prev = p -> prev;
free(p);
break;
}
else
p = p -> next;
}
}
void printlist()
{
LinkList p = head -> next;
while(p != head)
{
printf("name = %s\n",p -> name);
p = p -> next;
}
}
int main()
{
int i,n;
printf("Please input num:");
scanf("%d",&n);
InitList();
for(i = 0; i < n; i++)
{
CreateList();
}
printlist();
DeleteList();
printlist();
}
双向循环链表的创建和删除
最新推荐文章于 2023-08-05 14:14:23 发布