写的链表为什么总是运行崩溃
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; }
相关文章推荐
- 为什么我的程序debug版本运行没有问题,而release版本总是报错?
- 为什么应用程序池总是崩溃(Crash)
- 运行Tcode时为什么总是显示Compiling XXX in separate task
- 我的vc++6.0编译的时候没有问题,运行的时候为什么总是报告一个错误?
- java 程序为什么总是运行第一个程序
- AS3中为什么回调函数总是有运行时异常?
- 求助,为什么我本地的xcode工程拷贝到别的mac机上运行总是报错链接缺少文件呢?xcode版本是一样的呀
- 为什么运行时总是提示“Microsoft JET database Engine (0X80040E09)”不能更新,数据库或对象为只读?在线等...
- StarCraft开发:如何避免链表引起的游戏崩溃
- 小盆友 为什么你总是做不好营销?
- Visual Studio 运行程序时,结果画面为什么会一闪而过?
- 单链表的建立,测长度,打印,删除,插入,逆置c++代码实例及运行结果
- 双链表的建立,测长度,打印,插入c++代码实例及运行结果
- 经济危机下被裁的为什么总是我?
- C++采用AD0方式连接MSSQL时程序崩溃(win7运行正常,XP崩溃)
- 为什么Android手机总是越用越慢?
- 为什么VC中DEBUG版本可以正常运行的程序有时无法在RELEASE版本下正常运行(转)
- 文件浏览 manifest里需要什么权限吗为什么运行会异常中止
- 老板为什么总是最后一个知道坏消息? 推荐
- 为什么我们总是比别人钱少