首页 > 代码库 > 单链表 C语言实现 心得1

单链表 C语言实现 心得1

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <malloc.h>
#include "math.h"


typedef struct LNode
{
int data;
struct LNode * next; //指向下一个结点的指针
}LNode;


typedef struct LNode* LinkList;

 


void InitList(LinkList L)
{
L=(LinkList)malloc(sizeof(LNode));
if(!L)
exit(OVERFLOW);
L->next=NULL;
}
void LinkInsert(LinkList L,int i,int e)
{
int j=0;
LinkList p=L,s;
while (p&&j<i-1)
{
p=p->next;
j++;
}
if (!p||j>i-1)
{
return ;
}
s=(LinkList)malloc(sizeof(LNode));
s->data=http://www.mamicode.com/e;
s->next=p->next;
p->next=s;
return ;
}
void ListTraverse(LinkList L)
{
LinkList p=L->next;
while (p)
{
printf("%d",p->data);
p=p->next;
}
}
void CreateList(LinkList L,int n)
{
int i;
LinkList p;
//L=(LinkList)malloc(sizeof(LNode));
//if(!L)
// exit(OVERFLOW);
//L->next=NULL;
printf("输入%d个数据\n",n);
for(i=n;i>0;--i)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",p->data);
p->next=L->next;
L->next=p;
}

}

void main()
{
LinkList La;
int num, aa;
int j,a[4]={3,5,7,9};
La=(LinkList)malloc(sizeof(LNode));
La->next=NULL;   // 使用La 链表时必须对它进行初始化给它一个初始地址,否则会报错  Run-Time Check Failure #3 - The variable ‘La‘ is being used without being initialized.
for ( j = 1; j <5; ++j)
{
LinkInsert(La,j,a[j-1]);
}
for ( aa = 0; aa < 5;aa++)
{
printf("输入5整数");
scanf("%d",&num);
LinkInsert(La,2,num);
}

ListTraverse(La);
system("pause");//这个可以解决在vs2012上运行程序结果不会闪一下然后消失
}

 

单链表 C语言实现 心得1