1.双链表的定义
双链表比单链表多了一个向前的指针域来指向前一个结点,可以从前往后或从后往前操作。
typedef struct dblinknode
{
data_type data;//数据域
struct dblinknode *pre;//指向前一个结点的首地址
struct dblinknode *next;//指向下一个结点的首地址
}DBLinkNode;
2.双链表中间插入
pNew指向一个新结点,要插入的数的位置进行插入
1.先找到要插入的位置
1.先找到要插入的位置
pTmp =NULL
for(i = 1;i <=pos-1;i++)
{
pTmp = pTmp->next;
{
pTmp = pTmp->next;
}
2. pNew->next =pTmp->nex;
2. pNew->next =pTmp->nex;
pNew->pre = pTmp;
if(pTmp->next!=NULL)pTmp->next->pre=pNew;
pTmp->next = pNew;
if(pTmp->next!=NULL)pTmp->next->pre=pNew;
pTmp->next = pNew;
2.栈的定义
栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈),允许进行操作的一端称为“栈顶”,另一固定端称为“栈底”,当栈中没有元素时称为“空栈”。特点:后进先出(LIFO) 栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈),允许进行操作的一端称为“栈顶”,另一固定端称为“栈底”,当栈中没有元素时称为“空栈”。特点:后进先出(LIFO)。
顺序栈的定义
typedef struct stack
{
data_type arr[N[; //顺序且连续存储,大小固定
int top;// top ==-1;空。top == N;满
}Stack;
入栈
int Pushstack( Stack *pstack, data_type item)
if(NULL == pStack)
{
return NOEXIT;
}
//判断是否为满
if(pstack->top ==N-1)
{
return FULL;
}
pStack->top++;
pStack->arr[pStack->top] = item;
return OK;