#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
typedef int LinkedList;
typedef struct SLinkedListNode{
LinkedList data;
struct SLinkedListNode * next;
} Node;
void SLinkedListPrint(Node * prist){
Node *cur = prist;
while(cur!= NULL){
printf("%d->",cur->data);
cur = cur -> next;
}
printf("NULL\n");
}
void SLinkedlistPushEnd(Node ** prist , LinkedList x){
Node * newnode = (Node*)malloc(sizeof(Node));
newnode->data = x;
newnode->next = NULL;
if(*prist == NULL){
*prist = newnode;
}
else
{
Node *cur = *prist;
while(cur->next !=NULL){
cur = cur->next;
}
cur->next = newnode;
}
}
Node * CreatNode(LinkedList x){
Node * newnode = (Node*)malloc(sizeof(Node));
newnode->data = x;
newnode->next = NULL;
return newnode;
}
void SLinkedListhead(Node ** prist,LinkedList x){
Node * mid = *prist;
Node * newnode = CreatNode(x);
*prist = newnode;
newnode->next = mid;
}
void SLinkedListRemoveEnd(Node**prist){
Node* priv = *prist;
Node * cur = *prist;
while(cur->next != NULL){
priv = cur;
cur = cur ->next;
}
if(priv == *prist){
*prist =NULL;
}
priv->next = NULL;
free(cur);
}
void SLinkedListRemoveHead(Node**prist){
Node * cur = (*prist)->next;
free((*prist));
*prist = cur;
}
void slinked_list_remove(Node ** prist,LinkedList flag){
assert(*prist);
while(((*prist)->data) == flag){
(*prist) = (*prist) ->next;
}
Node*mid = *prist;
Node*cur = *prist;
while(cur != NULL){
while((cur)->data == flag){
mid->next = (cur)->next;
free(cur);
cur = mid->next;
}
mid = cur;
cur = cur->next;
}
}
void sliked_list_insert(Node ** prist,LinkedList x,LinkedList flag){
asser(*prist);
Node *cur = (*prist);
while(cur !=NULL){
if(cur->data == x){
Node*newnode2 = (Node*)malloc(sizeof(Node));
newnode2->data = flag;
newnode2 ->next = cur->next;
cur->next = newnode2;
cur = cur->next;
}
cur = cur->next;
}
}
void test1(){
Node * plist = NULL;
SLinkedlistPushEnd(&plist,1);
SLinkedlistPushEnd(&plist,2);
SLinkedlistPushEnd(&plist,3);
SLinkedlistPushEnd(&plist,4);
SLinkedlistPushEnd(&plist,5);
SLinkedlistPushEnd(&plist,6);
SLinkedListhead(&plist,4);
SLinkedListhead(&plist,3);
SLinkedListhead(&plist,2);
SLinkedListhead(&plist,1);
SLinkedListPrint(plist);
slinked_list_remove(&plist,2);
SLinkedListPrint(plist);
}
void test2(){
Node * phead = NULL;
slinked_list_remove(&phead,1);
SLinkedlistPushEnd(&phead,1);
SLinkedlistPushEnd(&phead,2);
SLinkedlistPushEnd(&phead,3);
SLinkedlistPushEnd(&phead,4);
SLinkedlistPushEnd(&phead,5);
SLinkedlistPushEnd(&phead,6);
SLinkedlistPushEnd(&phead,7);
SLinkedlistPushEnd(&phead,1);
SLinkedlistPushEnd(&phead,8);
SLinkedListPrint(phead);
slinked_list_remove(&phead,1);
SLinkedListPrint(phead);
}
void test3(){
Node * phead = NULL;
SLinkedlistPushEnd(&phead,1);
SLinkedlistPushEnd(&phead,2);
SLinkedlistPushEnd(&phead,3);
SLinkedlistPushEnd(&phead,4);
SLinkedlistPushEnd(&phead,5);
SLinkedlistPushEnd(&phead,6);
SLinkedlistPushEnd(&phead,7);
SLinkedlistPushEnd(&phead,1);
SLinkedlistPushEnd(&phead,8);
SLinkedListPrint(phead);
sliked_list_insert(&phead,1,1);
SLinkedListPrint(phead);
printf("输入成功");
}
int main(){
test2();
return 0;
}