链表实现步骤
while(p&&j<i)
{
p= p->next;++j;
if(!p||j>i)returnERROR;
e = p->data;
returnOK;
}
#pragmaonce
#defineTRUE 1
#defineFALSE 0
#defineOK 1
#defineERROR 0
#defineINFEASIBLE -1
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
for(inti = n;i>0;--i){
LinkList p = (LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data);
p->next = L->next;
while(p&&j<i)
{
p= p->next;++j;
if(!p||j>i)returnERROR;
e = p->data;
returnOK;
}
}
链表实现步骤:
1,创建头文件preConst.h
2,创建链表类型的声明文件:link.h
3,创建链表类型的函数的实现文件:link.cpp。先只实现createList_L和PrintList_L两个函数
4,创建链表类型的函数的测试文件:linkTest.cpp。先只测试createList_L和PrintList_L两个函数:
s->data=e;
s->next=p->next;
p->next=s;
returnOK;
}
Status ListDelete(LNode *L,intpos)
{
LNode *p=L;
LNode *q;
intj=0;
while(p->next&&j<pos-1)
{
p=p->next;
j++;
}
if(j>pos-1||!p->next)
returnERROR;
q=p->next;
p->next=q->next;
printf("Delete %d\n",q->data);
free(q);
returnOK;
}
Status GetElem_L(LinkList L,inti,ElemType &e)
{
LNode *p = L->next;intj= 1;
7,
#include"link.h"
#include<stdlib.h>
voidmain(){
LNode *headPointer = NULL;
intvalue = 0;
CreateList_L(headPointer, 10);
PrintList_L(headPointer);
ListInsert_L(headPointer,6,80);
s->data=e;
s->next=p->next;
p->next=s;
returnOK;
}
Status ListDelete(LNode *L,intpos)
{
LNode *p=L;
Lபைடு நூலகம்ode *q;
intj=0;
while(p->next&&j<pos-1)
{
p=p->next;
j++;
}
if(j>pos-1||!p->next)
PrintList_L(headPointer);
ListDelete_L(headPointer,8,value);
PrintList_L(headPointer);
}
#include"link.h"
#include<stdio.h>
#include<stdlib.h>
voidCreatList_L(LinkList &L,intn){
5,如果以上测试通过,再继续。否则如果有错误的话,通过设置断点的办法进行调试。鼠标双击要调试行的最左边,则出现红色的断点。意味着如果单步调试的话,会在这行代码停下来。
选择菜单中的debug-start debuging开始调试,
暂时中断时,会出现当前局部变量的值,通过检查是否符合预期来检查出错误。
6,继续将ListInsert_L与ListDelete_L完成
PrintList_L(headPointer);
ListInsert_L(headPointer,6,80);
PrintList_L(headPointer);
ListDelete_L(headPointer,8,value);
PrintList_L(headPointer);
}
Status ListInsert(LNode *L,intpos,ElemType e)
{
LNode *p;
LNode *s=(LNode *)malloc(sizeof(LNode));
intj=0;
p=L;
printf("Insert %d in %d\n",e,pos);
while(p&&j<pos-1)
{
p=p->next;
++j;
}
if(!p||j>pos-1)returnERROR;
#defineOVERLOW -2
typedefintStatus;
typedefintElemType;
#pragmaonce
#include"preConst.h"
structLNode{
ElemType data;
structLNode* next;
};
typedefLNode *LinkList;
returnERROR;
q=p->next;
p->next=q->next;
printf("Delete %d\n",q->data);
free(q);
returnOK;
}
Status GetElem_L(LinkList L,inti,ElemType &e)
{
LNode *p = L->next;intj= 1;
voidCreateList_L(LinkList &L,intn);
Status DestroyList_L(LinkList &L);
Status GetElem_L(LinkList L,inti,ElemType &e);
Status ListInsert_L(LinkList &L,inti,ElemType e);
{
LNode *p;
LNode *s=(LNode *)malloc(sizeof(LNode));
intj=0;
p=L;
printf("Insert %d in %d\n",e,pos);
while(p&&j<pos-1)
{
p=p->next;
++j;
}
if(!p||j>pos-1)returnERROR;
L->next = p;
}
}
Status PrintList_L(LinkList L){
LinkList p = L->next;
while(p){
printf("%d",p->data);
p = p->next;
}
returnOK;
}
Status ListInsert(LNode *L,intpos,ElemType e)
Status ListDelete_L(LinkList &L,inti,ElemType &e);
Status PrintList_L(LinkList L);
voidmain(){
LNode *headPointer = NULL;
intvalue = 0;
CreateList_L(headPointer, 10);