c语言链表操作.doc

c语言链表操作.doc

ID:56825645

大小:62.50 KB

页数:9页

时间:2020-07-15

c语言链表操作.doc_第1页
c语言链表操作.doc_第2页
c语言链表操作.doc_第3页
c语言链表操作.doc_第4页
c语言链表操作.doc_第5页
资源描述:

《c语言链表操作.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1.链表的删除如创建一个学生学号及姓名的单链表,即节点包括学生学号、姓名及指向下一个节点的指针,链表按学生的学号排列。再从键盘输入某一学生姓名,将其从链表中删除。首先定义链表的结构:从链表中删除一个节点有三种情况,即删除链表头节点、删除链表的中间节点、删除链表的尾节点。题目给出的是学生姓名,则应在链表中从头到尾依此查找各节点,并与各节点的学生姓名比较,若相同,则查找成功,否则,找不到节点。由于删除的节点可能在链表的头,会对链表的头指针造成丢失,所以定义删除节点的函数的返回值定义为返回结构体类型的指针。[cpp] viewplain copy1

2、.struct node delet(head,pstr)/以head为头指针,删除pstr所在节点/  2.struct node head;  3.char pstr;  4.{  5.    struct nodetemp,p;  6.    temp  = head;  / 链表的头指针/  7.    if (head==NULL)/链表为空/   8.        printf("Listis null!");  9.    else /非空表/  10.    {  11.                temp = 

3、head;  12.        while (strcmp(temp->str,pstr)!=0&&temp->next!=NULL)/ 若节点的字符串与输入字符串不同,并且未到链表尾/  13.        {  14.            p = temp;  15.            temp = tmep->next;/ 跟踪链表的增长,即指针后移/  16.        }  17.        if(strcmp(temp->str,pstr)==0) /找到字符串/  18.        {  19.     

4、   if(temp==head) { / 表头节点/  20.            printf("delete string :%s",temp->str);  21.            head = head->next;  22.            free(temp);/释放被删节点/  23.        }  24.        else  25.        {  26.            p->next=temp->next; /表中节点/  1.            printf("delete 

5、string :%s",temp->str);  2.            free(temp);  3.        }  4.    }  5.    else  6.    printf("no find string!");/没找到要删除的字符串/  7.    }  8.    return(head);  9.}  2.链表的插入首先定义链表的结构:[cpp] viewplain copy1.struct  2.{  3.int num; /学生学号 /  4.char str[20]; /姓名 /  5.stru

6、ct node next;  6.} ;  在建立的单链表中,插入节点有三种情况,如图所示;插入的节点可以在表头、表中或表尾。假定我们按照以学号为顺序建立链表,则插入的节点依次与表中节点相比较,找到插入位置。由于插入的节点可能在链表的头,会对链表的头指针造成修改,所以定义插入节点的函数的返回值定义为返回结构体类型的指针。节点的插入函数如下:[cpp] viewplain copy1.struct node insert(head,pstr,n) /插入学号为n、姓名为p s t r 的节点/  2.struct node head; /链表的

7、头指针/  3.char pstr;   4.int n;  5.{  6.    struct node p1,p2,p3;  7.    p1=(struct node)malloc(sizeof(struct node))/分配一个新节点/  8.    strcpy(p1->str,pstr); /写入节点的姓名字串/  9.    p1->num = n; / 学号/  10.    p2 = head;  11.    if(head==NULL) / 空表/  12.    {  13.        head=p1;   14

8、.        p1->next=NULL;/新节点插入表头/  15.    }  16.    else/非空表/  17.    {   18.      

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。