单链表第i个元素之前插入元素
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef struct student{
char number[11];
char name[11];
char sex; /* M F or N*/
int age;
char tel[15];
char addr[50];
float math; /*五门课成绩*/
float english;
float chemistry;
float physics;
float history;
float average; /*平均分*/
}Item;
typedef struct node{
Item item;
struct node *next;
}Node;
typedef Node * List;
/*向第i个元素前插入一条数据*/
Status Insert(List * plist,int i,Item item){
Node * pnode = *plist;
Node * pnew;
int j=1;
if(i<1||i>ListItemCount(plist))
return FALSE;
else if(i==1){
CopyToNode(item,pnew);
pnew->next = pnode;
*plist = pnew;
return TRUE;
}
while(pnode!=NULL&&j
pnode = pnode->next;
j++;
}
if(!pnode||j>i)
return FALSE;
CopyToNode(item,pnew);
pnew->next = pnode->next;
pnode->next = pnew;
return TRUE;
} /*上面这段代码有问题,不知出在哪里?大神们路过帮小弟看一下,感激不尽*/
/*局部函数定义*/
static void CopyToNode(Item item,Node *pnode){
pnode->item = item;
}
分享到:
------解决方案--------------------
参考一下下面的代码:在第pos个节点的前面插入一个新的结点,该节点的值是val, 并且pos的值是从1开始
bool insert_list(PNODE pHead, int pos, int val)
{
int i = 0;
PNODE p = pHead;
while (NULL!=p && i
{
p = p->pNext;