c语言实训中表插入的函数 用c语言编写表格( 二 )


if (position1 || positionm_listLength) {
return false;
}
LNode *pTemp = NULL;
if (!(GetNode(position - 1, pTemp))) {
return false;
}
LNode *pDel = NULL;
pDel = pTemp-next;
pTemp-next = pDel-next;
delete pDel;
m_listLength--;
return true;
}
//得到指定位置节点的指针 。
bool LinkList::GetNode(int position, LNode **node) {
LNode *pTemp = NULL;
int curPos = -1;
pTemp = m_pList;
while (pTemp != NULL) {
curPos++;
if (curPos == position)
break;
pTemp = pTemp-next;
}
if (curPos != position) {
return false;
}
*node = pTemp;
return true;
}
//定位与指定数据相等的数据节点 。
//如果在当前链表中已经存在该数据则返回该数据节点的索引号 。
//若不存在这样的节点则返回0 。
//节点索引从0开始到listLength 。
int LinkList::LocateElem(int elem) {
LNode *pTemp = NULL;
int curIndex = 1;
pTemp = m_pList-next;
while ((pTemp != NULL)(pTemp-data != elem)) {
pTemp = pTemp-next;
curIndex++;
}
if (pTemp == NULL) {
return 0;
}
return curIndex;
}
/*
int main(){
LinkList l;
l.InsertNode(1, 10);
l.InsertNode(2, 20);
l.InsertNode(3, 30);
l.InsertNode(4, 40);
coutl.GetLength()endl;
int dataTemp = 0;
for (int i = 1; i = l.GetLength(); i++) {
l.GetNodeData(i, dataTemp);
coutdataTempendl;
}
if (l.SetNodeData(3, 50)) {
cout "DONE\n";
} else {
cout"Failed\n";
}
for (i = 1; i = l.GetLength(); i++) {
l.GetNodeData(i, dataTemp);
coutdataTempendl;
}
if (l.DeleteNode(4)) {
cout "DONE\n";
} else {
cout"Failed\n";
}
for (i = 1; i = l.GetLength(); i++) {
l.GetNodeData(i, dataTemp);
coutdataTempendl;
}
coutl.LocateElem(50)endl;
return 0;
}
*/
数据结构 c语言版 ——顺序表的查找、插入与删除#includestdio.h
#includestdlib.h
#define N 10 //顺序表的最大容量
int length=0;//顺序表的当前元素个数
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define LIST_INIT_SIZE 100//线性表存储的空间初始化分配量
#define LISTINCREAMENT 10 //线性表存储空间的分配增量
typedef struct LNode//线性单链表存储结构
{
int data;
struct LNode *next;
}LNode,*LinkList;
int CreatList_L(LinkListL)//创建一个线性链表
{
L=(LinkList)malloc(sizeof(LNode));//分配一个空间给链表,作为头结点
if(!L) exit(OVERFLOW);
L-next=NULL;
return OK;
}
int DestroyList_L(LinkList L)//销毁链表
{
if(L) free(L);
return OK;
}
int ListInsert_L(LinkListL,int i,int e)//再练表的第i个元素前插入一个元素e
{
LinkList p=L;//p指针定位于i-1
LNode *s;
int j=0;
while(pji-1) {p=p-next;j++;}//定位
if(!p||ji-1) return ERROR;//如果i1或大于链表元素个数+1
s=(LNode*)malloc(sizeof(LNode));
if(!s) exit(OVERFLOW);
s-data=https://www.04ip.com/post/e;//完成插入操作
s-next=p-next;
p-next=s;
return OK;
}
int ListDelet_L(LinkListL,int i,inte)//删除链表L中的第i个元素,并返回给e;
{
LinkList p=L;
LNode* q;
int j=0;
while(!pji-1) {p=p-next;j++;}//p指针定位于i-1;
if(!p-next||ji-1) return ERROR;
e=p-next-data;//完成删除操作
q=p-next;
p-next=p-next-next;
free(q);
return OK;

推荐阅读