不带头结点链表,尾部插入法创建
生活随笔
收集整理的這篇文章主要介紹了
不带头结点链表,尾部插入法创建
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*創建一個鏈表,尾結點插入法*/
#include<stdio.h>
#include<stdlib.h>
#define DataType char/*節點類型*/
typedef struct node
{DataType data;struct node *next;
}ListNode,*LinkList;/*
*不帶頭結點
*尾插入法的實現
*從頭結點讀取的時候,就是按照輸入順序讀出的
*/
LinkList createLinkList()
{DataType ch;LinkList p,head,rear;head = rear = NULL;/*讀取元素*/puts("輸入節點的數據:");while((ch = getchar()) != '\n'){p = (LinkList)malloc(sizeof(ListNode));if(!p) exit(0);p->data = ch;p->next = NULL;if(NULL== head) head = p;else rear->next = p;rear = p;}return head;
}/*在鏈表尾部插入元素*/
LinkList insertLinkList(LinkList head,DataType item)
{LinkList temp,rear = head;while(rear->next)rear = rear->next;temp = (LinkList)malloc(sizeof(ListNode));if(!temp) exit(0);temp->data = item;temp->next = NULL;rear->next = temp;return head;
}
/*
*從鏈表中查找元素并刪除它
*支持刪除相同元素
*/
LinkList delLinkList(LinkList head,DataType item)
{LinkList q,p = head;while(p){if(p->data == item){if(p == head){head = p->next;free(p);p = head;continue;}q->next = p->next;free(p);p = q->next;continue;}q = p;p = p->next;}return head;
}
void destroyLinkList(LinkList head)
{LinkList p = head;while(head){p = head->next;free(head);head = p;}
}
void print(LinkList head)
{LinkList p = head;while(p){printf("%c",p->data);p = p->next;}
}
int main()
{char ch;LinkList p,head;head = createLinkList();if(NULL == head)printf("The LinkList is empty.\n");elseprint(head);puts("\n輸入要插入的元素:");ch = getchar();getchar();head = insertLinkList(head,ch);if(NULL == head)printf("The LinkList is empty.\n");elseprint(head);puts("\n輸入您要刪除的元素:");ch = getchar();getchar();head = delLinkList(head,ch);if(NULL == head)printf("The LinkList is empty.\n");elseprint(head);destroyLinkList(head);return 0;
}
?
轉載于:https://www.cnblogs.com/plxx/p/3485150.html
總結
以上是生活随笔為你收集整理的不带头结点链表,尾部插入法创建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android中GridView使用总结
- 下一篇: 浅析 public static voi