Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- typedef int ElementType;
- typedef struct Node{
- ElementType inf; //luu tru phan tu
- Node *next; //tro den phan tu tiep theo
- }NodeType;
- // typedef struct Node NodeType;
- NodeType *head=NULL; //khoi tao phan tu dau tien
- NodeType *Insert_ToMiddle(NodeType *list, ElementType x){
- NodeType *newNode;
- newNode = (NodeType*) malloc(sizeof(NodeType));
- newNode->inf = x;
- newNode->next = list->next;
- list->next = newNode;
- return newNode;
- }
- ElementType DeleteMiddle(NodeType *list){
- NodeType *oldNode;
- oldNode = list->next;
- ElementType x = oldNode->inf;
- list->next = oldNode->next;
- free(oldNode);
- return x;
- }
- NodeType *Insert_ToHead(NodeType *list,ElementType x){
- NodeType *newNode;
- newNode=(NodeType*) malloc(sizeof(NodeType));
- newNode->inf=x;
- newNode->next=head;
- head=newNode;
- return head;
- }
- NodeType *DeleteHead(NodeType *list){
- NodeType *oldNode;
- oldNode = list->next;
- free(list);
- return oldNode;
- }
- NodeType *Insert_ToTail(NodeType *list,ElementType x){
- NodeType *newNode,*cur;
- newNode=(NodeType*) malloc(sizeof(NodeType));
- newNode->inf=x;
- newNode->next=NULL;
- cur=head;//tro cur vao dau danh sach
- while(cur!=NULL&&cur->next!=NULL){
- cur=cur->next;
- }
- if(cur==NULL){
- newNode->next=head;
- head=newNode;
- }else{
- cur->next=newNode;
- }
- return newNode;
- }
- NodeType *DeleteTail(NodeType *list){
- NodeType *oldNode1, *oldNode2;
- oldNode1 = list;
- oldNode2 = list;
- while(oldNode1 != NULL){
- oldNode2 = oldNode1;
- oldNode1 = oldNode1->next;
- }
- oldNode2->next = NULL;
- free(oldNode1);
- return list;
- }
- NodeType* InsertWithSort(NodeType *list, ElementType x){
- NodeType *newNode;
- NodeType *preCurrent=NULL;
- NodeType *Current = list;
- newNode = (NodeType*)malloc(sizeof(NodeType));
- while (Current!= NULL&&!(Current->inf>x)){
- preCurrent = Current;
- Current = Current->next;
- }
- newNode->inf=x;
- newNode->next=Current;
- if(preCurrent==NULL){
- head=newNode;
- }else{
- preCurrent->next=newNode;
- }
- return head;
- }
- NodeType *Search(NodeType *list, ElementType x){
- while(list->inf != x)
- list = list->next;
- return list;
- }
- int isEmpty(NodeType *list){
- return !list;
- }
- NodeType *MakeNull(NodeType *list){
- while (!isEmpty(list)) list = DeleteHead(list);
- return list;
- }
- void Print_DS(NodeType *list){
- NodeType *temp;
- temp=head;
- printf("-------------\n");
- while(temp){
- printf("%d -- ", temp->inf);
- temp=temp->next;
- }
- printf("\n-------------\n");
- }
- int main(){
- ElementType temp;
- NodeType *ptemp;
- for(int i=0;i<5;i++){
- printf("Nhap vao 1 phan tu: ");scanf("%d",&temp);
- ptemp=Insert_ToHead(head,temp);
- }
- Print_DS(head);
- printf("Nhap vao 1 phan tu: ");scanf("%d",&temp);
- ptemp = Insert_ToTail(head,temp);
- printf("Nhap vao 1 phan tu: ");scanf("%d",&temp);
- ptemp = Insert_ToMiddle(head, temp);
- Print_DS(head);
- DeleteMiddle(head);
- Print_DS(head);
- }
Advertisement
Add Comment
Please, Sign In to add comment