您的位置:首页 > 其它

写的链表为什么总是运行崩溃

2014-04-09 09:31 381 查看
为甚么这个代码不能运行函数,编译时有一个警告,不知道怎么改?请大家帮忙看下,

代码:

#include <stdio.h>
#include <stdlib.h>

typedef struct Node
{
int record;
struct Node  *Next;
} Node;
typedef struct LinkList
{
Node *Head;
} LinkList;
void InitLinkList(LinkList *pList)
{
pList = (LinkList*)malloc(sizeof(Node));
pList->Head = NULL;
pList->Head->record = 0;
// pList ->Head->Size = 0;
}
void CreatLinkList(LinkList *pList, int n)
{
//pList = (LinkList*)malloc(sizeof(Node));
// pList ->Next = NULL;
int i, record;
for(i = n; i>0; i--)
{
Node *pNode = (Node*)malloc(sizeof(Node));
scanf("%d",&record);
pNode->record = record;
pNode->Next = pList->Head->Next;
pList->Head->Next = pNode;
//pNode ->record = record;
//  pList->Head->Size = n;
}
}
void InstLinkList(LinkList *pList,int i, int element)
{
Node *pNode, *qNode;
pNode = pList->Head;
int j =0;
while(pNode&&j<i-1)
{
pNode = pNode->Next;
j++;
}
if(!pNode||j>i-1)
{
printf("Not Found");
}
qNode = (Node*)malloc(sizeof(Node));
qNode ->record = element;
qNode ->Next = pNode->Next;
pNode ->Next = qNode;
}
void DeleLinkList(LinkList*pList, int i)
{
Node *pNode;
Node *qNode = (Node*)malloc(sizeof(Node));
pNode = pList->Head;
int j= 0;
while(pNode->Next&&j<i-1)
{
pNode = pNode->Next;
++j;
}
if (!(pNode->Next)||j>i-1)
{
printf(" ERROR\n");
}
qNode= pNode->Next;
pNode->Next = qNode->Next;
free(qNode);
}
void FindelemLinkList(LinkList*pList,int record)
{
Node *pNode;
pNode = pList->Head;
int i =1;
while (pNode->Next!= NULL)
{
if (pNode->record==record)
{
printf("%d\n",i);
break;
}
else
{
i++;
}
}
printf("Not Found\n");
}
void ReposLinkList(LinkList *pList)
{
if(pList->Head->Next&&pList->Head->Next->Next)
{
Node *pNode;
Node * qNode;
pNode = pList->Head;
qNode = pNode->Next;
pNode->Next = NULL;
while(qNode)
{
pNode = qNode;
qNode = qNode->Next;
pNode->Next = pList->Head->Next;
pList->Head->Next = pNode;
}
}
}
void PrintLinkList(LinkList *pList)
{
Node *pNode;
pNode =pList->Head;
while(pNode->Next!=NULL)
{
printf("%d",pNode->record);
pNode = pNode->Next;
}
printf("\n");
}
void MergeLinkList(LinkList *pList1,LinkList *pList2)
{
Node *pNode;
Node *qNode;
Node * rNode;
pNode = pList1->Head;
qNode = pList1->Head;
while(qNode->Next!=NULL)
{
InstLinkList(pList1,1,qNode->record);
qNode = qNode->Next;
}
int a;
for (pNode=pList1->Head;pNode;pNode=pNode->Next)
{
rNode = pNode;
for(qNode=pNode->Next;qNode;qNode=qNode->Next)
{
if(qNode->record<rNode->record)
{
rNode = qNode;
}
}
if(rNode!=pNode)
{
a = pNode->record;
pNode->record = rNode->record;
rNode->record = a;
}
}
PrintLinkList(pNode);
}
int main(void)
{
LinkList Lista, *p;
p = &Lista;
InitLinkList(p);
int n;
scanf("%d",&n);
CreatLinkList(p,n);
printf("Creative a LinkList La:\n ");
PrintLinkList(p);
int a, b;
scanf("%d%d",&a,&b);
InstLinkList(p,a,b);
printf("Insert element LinkList La :\n");
PrintLinkList(p);
int c;
scanf("%d",&c);
DeleLinkList(p,c);
printf("Delete Element LinkList La:\n");
PrintLinkList(p);
int number;
scanf("%d",&number);
FindelemLinkList(p,number);
ReposLinkList(p);
printf("Repos LinkList La:\n");
PrintLinkList(p);
int m;
scanf("%d",&m);
LinkList Listb, *q;
q = &Listb;
InitLinkList(q) ;
CreatLinkList(q,m);
printf("Merger LinkList \n");
MergeLinkList(p,q);

//printf("Hello world!\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: