struct node{
int data;
struct node* next;
};
前置插入
void insertNewNode(struct node* headPos,int data){
struct node* newNodePos = (struct node*)malloc(sizeof(struct node*));
//malloc会返回void*类型的地址,故试用强制类型转换
(*newNodePos).data = data;
//等同于 newNodePos->data =data; 对新节点的data进行赋值
newNodePos->next = (*headPos).next;
//将头结点的next地址赋值给新节点
(*headPos).next = newNodePos;
//将新节点的地址赋值给头节点的next
}
后置插入
void myinsertTail(struct node * headPos , int insData ){
/*在此处完成任务,在head为表头的单链表表尾插入数据元素insData*/
//begin
struct node* p = (struct node*)malloc(sizeof(struct node*));
p->data = insData;
p->next = NULL;
struct node* q;
q = headPos;
while(q->next!=NULL)
q = q->next;
q->next = p ;
//一直查找,直到卒后一个为NULL,然后对NULL进行赋值
打印函数
void myprintList(struct node *L){
/*在此处完成任务,输出head为表头链表中的数据,每输出一个数据换一行*/
//begin
struct node* p = L;
while(p->next != NULL)
{
p=p->next;
printf("%d\n",p->data);
}
//end
}
主函数
int main(){
struct node head;
head.data = -1;
head.next = NULL;
myinsertTail(&head,3);
myinsertTail(&head,4);
myinsertTail(&head,5);
//cout<<head.data<<endl<<(*head.next).data<<endl;
myprintList(&head);
return 0;
}