1. 首页 > 科技

c语言结构体链表的节点删除问题 求助大佬 c语言链表删除节点

c语言结构体链表的节点删除问题 求助大佬c语言链表删除节点

c语言 链表节点删除

较为简便的方法是将函数返回值改为people *,然后将函数中所有的return;,改为return pHead;当然,还需要添加一句:

people *del(people *pHead) {

  ..............

  {

    printf("通讯录没有任何成员\n");

return pHead; // 修改(1)

  }

  ..........................

  while(p1!=0) {

     if((p1==pHead)&&strcmp(name,p1->name)==0)  //如果目标是第一个

{

   ........................

    return pHead; // 修改(2)

}

     else if(strcmp(name,p1->name)==0) //如果不是第一个人

{

  ........................

  return pHead; // 修改(3)

}

.................

  }

  prinft("没有找到该人\n");

  return pHead; // 添加内容

}调用方法改为

pHead = del(pHead);

C语言程序,怎么在结构体链表中插入或者删除某个结构体?

没学过数据结构?那你们老师在干嘛?数据结构不应该是和语言同步进行的吗?

struct A  //这就是个结构体,包含数据域和指针域

{

    int a;//数据域,可以是任何类型的。

    char b;//数据域

    A *p;//指针域,就是struct A类型。

};链表,一般是动态的。你要静态的就不用malloc分配就行了。定义N个struct A就行了。

struct A a1;

struct A a2;

struct A a3;

struct A a4;

//a1作为第一个节点

a1->next = a2;

a2->next = a3;

a3->next = a4;

a4->next = NULL;

//插入,在a2后面插入a5

struct A a5;

a5->next = a2->next;

a2->next = a5;//注意指针的赋值顺序。虽然全部是静态的问题不大。动态分配的时候不仔细会造成断链,内存溢出。

//删除a5

a2->next = a5->next;//静态不存在释放的问题,动态申请的请释放a5;

C语言链表删除节点代码求教

删除后 如果输入的字符是链表的最后一个 运行结果会可能出现 段错误

p=p->next 这句可能指向不明地址 段错误可能出现

c语言数据结构(链表的插入和删除)

下面是我的源代码,你看看,应该可以帮上你的 :-)

/*

* singleLinkedList.cc

*

* Created on: 2010-6-1

* Author: LiuFeng

*

*/

#include <iostream>

#include <cstdlib>

#include <cstdio>

typedef struct node {

int data;

node* next;

} node;

node*

search_node(node* head, int pos){

node*p=head->next;

if(pos<0){

printf("incorrect position to search node:\n");

return NULL;

}

if(pos==0){

return head;

}

if(p==NULL){

printf("List is empty\n");

return NULL;

}

while(--pos){

if((p=p->next)==NULL){

printf("incorrect postion to search node!\n");

break;

}

}

return p;

}

node*

insert_node(node* head, int pos, int data){

node* item=NULL;

node* p;

item = (node*)malloc(sizeof(node));

item->data=data;

if(pos==0){

head->next=item;

return head;

}

p=search_node(head,pos-1);

if(p!=NULL){

item->next=p->next;

p->next=item;

}

return head;

}

node*

delete_node(node*head, int pos){

node* item=NULL;

node* p = head->next;

if(p==NULL){

printf("link is empty\n");

return NULL;

}

p=search_node(head, pos);

if(p!=NULL&& p->next!=NULL){

item=p->next;

p->next=item->next;

delete item;

}

return head;

}

int length(node * head){

int len=0;

node *p;

p=head->next;

while(p!=NULL){

++len;

p=p->next;

}

return len;

}