以带头结点的单链表做线性表的存储表示,编写算法删除表中的偶数序号结点,使(a1,a2,a3,a4,a5...)变成(a1,a3,a5...)
1条回答 默认 最新
threenewbee 2016-01-07 14:06关注#include<stdio.h> #include<malloc.h> typedef struct LNode { int data; struct LNode *next; }*LinkList; LinkList Creat_List(int n) { LinkList head,p,q; head = p = (LinkList)malloc(sizeof(LNode)); for(int i = 1; i <= n; i++) { q = (LinkList)malloc(sizeof(LNode)); q->data = i; p->next = q; p = q; } p->next = NULL; return head; } void Delete_evenLNode(LinkList head) { // 删除偶数位结点 LinkList q,p = head; int i; for(i = 1; p->next; ++i) { if(i % 2 == 0) { q = p->next; p->next = q->next; free(q); } else p = p->next; } } void Print_List(LinkList head) { LinkList p = head->next; while(p != NULL) { printf("%d ",p->data); p = p->next; } printf("\n"); } void main () { LinkList head = Creat_List(16); Print_List(head); Delete_evenLNode(head); printf("删除偶数结点后 :\n"); Print_List(head); }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 1