</pre><pre name="code" class="cpp">#include <stdio.h>
#include<stdlib.h>
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList createLink(unsigned char LinkNodeNum);
void printLink(LinkList head);
void addLinkNode(LinkList head,int key);
LinkList deleteLinkNode(LinkList head,int key);
LinkList reverseLink(LinkList head);
LinkList insertLinkNode(LinkList head,int key);
LinkList sortLinkNode(LinkList head);
void main()
{
LinkList head = NULL;
head = createLink(10);
printLink(head);
addLinkNode(head,11);
printLink(head);
head = deleteLinkNode(head,0);
printLink(head);
head = deleteLinkNode(head,10);
printLink(head);
head = deleteLinkNode(head,11);
printLink(head);
head = deleteLinkNode(head,1000);
printLink(head);
head = reverseLink(head);
printLink(head);
head = insertLinkNode(head,100);
printLink(head);
printf("\n***排序***\n");
head = sortLinkNode(head);
printLink(head);
}
LinkList createLink(unsigned char LinkNodeNum)
{
LinkList head,pNew;
head=(LinkList)malloc(sizeof(LNode));
head->data = 0; // 也可以是rand()%10(随机值)
head->next = NULL;
LinkList q = head;
for(int i = 1; i <= LinkNodeNum; i++)
{
pNew = (LinkList)malloc(sizeof(LNode));
pNew->data = i;//rand()%100;
q->next = pNew;
q = q->next;
}
q->next = NULL;
return head;
}
void printLink(LinkList head)
{
LinkList p = head;
while(p)
{
printf("%d",p->data);
if(p->next != NULL)
printf("->");
p = p->next;
}
printf("\n");
}
void addLinkNode(LinkList head,int key)
{
LinkList p = head;
while(p->next != NULL)
{
p = p->next;
}
LinkList pNew;
pNew=(LinkList)malloc(sizeof(LNode));
pNew->data = key;
p->next = pNew;
pNew->next = NULL;
}
LinkList deleteLinkNode(LinkList head,int key)
{
LinkList p = head;
LinkList q = NULL;
if(key == p->data)
{
printf("要删除的结点是头结点");
head = p->next;
free(p);
return head;
}
else
{
while(p->next!=NULL)
{
q = p;
p = p->next;
if(key == p->data)
{
printf("要删除的结点是非头结点");
q->next = p->next;
free(p);
return head;
}
}
}
printf("\n*****没有找到要删除的元素*****\n");
return head;
}
LinkList reverseLink(LinkList head)
{
LinkList p1 = NULL,P2 = NULL;
while(head)
{
P2 = (LinkList)malloc(sizeof(LNode));
if(p1 == NULL)
{
P2->next = NULL;
}
{
P2->next = p1;
}
p1 = P2;
P2->data = head->data;
head = head->next;
}
return p1;
}
LinkList insertLinkNode(LinkList head,int key)
{
LinkList p = head;
LinkList q = NULL;
LinkList k = (LinkList)malloc(sizeof(LNode));
k->data = 100;
k->next = NULL;
//尾插
while(p!= NULL)
{
q = p;
p = p->next;
}
q->next = k;
return head;
}
LinkList sortLinkNode(LinkList head)
{
LinkList p = NULL;
LinkList q = NULL;
int temp;
/***冒泡法***/
for(p = head; p != NULL; p = p->next)
{
for(q = p->next; q !=NULL; q = q->next)
{
if(p->data > q->data)
{
temp = p->data;
p->data = q->data;
q->data = temp;
}
}
}
return head;
}
简单的链表相关练习
最新推荐文章于 2024-05-01 10:28:08 发布