C语言编程练习之单链表基本操作

1.打印链表(PrintList)

2.建立链表(CreateList)

3.链表末尾插入节点(InsertList)

4.链表中删除指定节点(DeleteNode)

5.找链表中第一个出现的最小节点(FindMin)



#include "stdio.h"

typedef struct node
{
int data;
struct node* next;
}LNode,*Position,*List;

void PrintList(List L)
{
    Position p;
    p=L->next;

        printf("The list is :");
        while(p!=NULL)
        {
         printf("%3d",p->data);
         p=p->next;
        }
  

  printf(" n");
}

List CreateList(void)
{
Position p;
p=(Position)malloc(sizeof(LNode));
if(p==NULL) printf("Out of space!");
p->data=0;
p->next=NULL;
return p;
}

Position CreateNode(void)
{
Position p;
p=(Position)malloc(sizeof(LNode));
if(p==NULL) printf("Out of space!");
p->data=0;
p->next=NULL;
return p;
}

void InsertList(List L,int data)
{
Position p,temp;
p=L;
temp=CreateNode();
temp->data=data;
while(p->next!=NULL)
{
   p=p->next;
}
  p->next=temp;
}

void DeleteNode(List L,int data)
{
Position p,temp;
p=L;
while(p->next!=NULL&&p->next->data!=data)
{
  p=p->next;
}
temp=p->next;
p->next=p->next->next;
free(temp);
}

void FindMin(List L)
{
int min,count,j;
Position p;
p=L->next;

min=p->data;
count=1;
while(p->next!=NULL)
{
  p=p->next;
  count++;
if(p->data<min)
  {
  min=p->data;
  j=count;
  }
}

printf("The first min number is %d : n",min);
printf("The Position is %d : n",j);


}


main()
{
int i;
  List L=CreateList();
  PrintList(L);

   InsertList(L,10);
   InsertList(L,4);
   InsertList(L,1);
   InsertList(L,5);
   InsertList(L,7);
   InsertList(L,2);
   InsertList(L,1);
   PrintList(L);
   FindMin(L);
   PrintList(L);

}

你可能感兴趣的:(编程,C++,c,C#,D语言)