• 不带头结点,头部插入法创建链表


    #include<stdio.h>
    #include<stdlib.h>
    #define ListSize 100
    
    typedef int DataType;
    typedef struct{
    	DataType *data;
    	int length;
    	int size;
    } Sqlist;
    void initSqlist(Sqlist *L)
    {
    	L->data = (void*)malloc(ListSize * sizeof(int));
    	if(! L->data) exit(0);
    	L->length = 0;
    	L->size = ListSize;
    }
    /*在顺序表的i位置插入元素*/
    void insertSqlist(Sqlist *L,int i,DataType e){
    	int j;
    	DataType *base;
    	if(i<1 || i>L->length+1) exit(0);
    	if(L->length >= L->size)
    	{
    		base = (void *) realloc(L->data,(L->length+10)*sizeof(int));
    		if(! base) exit(0);
    		L->data = base;
    		L->size = L->length +10;
    	}
    	for(j = L->length-1;j>= i-1;j--)
    	{
    		L->data[j+1] = L->data[j];
    
    	}
    	L->data[i-1] = e;
    	L->length ++;
    }
    
    /*从顺序表中删除元素*/
    void delSqlist(Sqlist *L,int i)
    {
    	/*位置是否合法*/
    	int j;
    	if(i<1 || i>L->length +1) exit(0);
    
    	for(j = i;j < L->length;j++)
    	xx{
    		L->data[j-1] = L->data[j];
    	}
    	L->length --;
    }
    int main()
    {
    	Sqlist L;
    	int i;
    	initSqlist(&L);
    	for(i = 0;i < 15;i++)
    	{
    		insertSqlist(&L,i+1,i+1);
    	}
    	for(i = 0;i<15;i++)
    		printf("%d ",L.data[i]);
    	putchar(10);
    ''
    	delSqlist(&L,5);
    	for(i = 0;i<15;i++)
    		printf("%d ",L.data[i]);
    	putchar(10);
    	system("pause");
    
    	return 0;
    }
    

    上面代码实现了顺序表的创建。

    /*创建一个链表,头结点插入法*/
    #include<stdio.h>
    #include<stdlib.h>
    typedef char DataType;
    
    typedef struct ndoe{
        DataType data;
        struct node *next;
    }ListNode;
    
    typedef ListNode *LinkList;
    
    /*头插入法
    *重复读入新的数据,生成新的节点,然后将该节点插入到头部
    *知道数据结束
    *并返回头结点
    *头结点中也存有元素
    *这样读取的数据和读入的数据顺序是相反的
    */
    
    LinkList createLinkList()
    {
        char ch;
        ListNode *temp;
        LinkList head;
        head = NULL;
        printf("输入各个节点的数据:
    ");
        while((ch = getchar()) != '
    ')
        {
            temp = (ListNode *)malloc(sizeof(ListNode));
            if(!temp)exit(0);
            temp->data = ch;
            temp->next = head;
            head = temp;
        }
        return head;
    }
    /*
    * 在链表的尾部插入数据*/
    void insertLinkList(LinkList head,DataType item)
    {
        LinkList p,temp = head;
        while(temp->next != NULL )
            temp = temp->next;
        p = (LinkList)malloc(sizeof (ListNode));
        if(!p) exit(0);
        p->data = item;
    
        p->next = NULL;
        temp->next = p;
    
        //return head;
    }
    /**释放链表的各个节点
    *头结点的释放尤其重要
    **/
    void destroyLinkList(LinkList head)
    {
        LinkList p;
        p = head;
        while(head)
        {
            p = head->next;
            free(head);
            head = p;
        }
    }
    /*在链表中查找元素是不是存在*/
    int searchLinkList(LinkList head,DataType item)
    {
        LinkList p = head;
        while(p)
        {
            if(p->data == item)
                return 1;
            p = p->next;
        }
        return 0;
    }
    int main(vodi)
    {
        char ch;
        int status;
        LinkList p, head = createLinkList();
        for(p = head;p!= NULL;p = p->next)
            printf("%c",p->data);
        putchar(10);
    
        /*插入新的元素*/
        puts("输入你要插入的新元素:");
        ch = getchar();
        //getchar();
        insertLinkList(head,ch);
        for(p = head;p != NULL;p = p->next)
            printf("%c ",p->data);
        putchar(10);
    
        /*查找元素*/
        printf("输入要查找的元素:");
        ch = getchar();
        getchar();
        status =searchLinkList(head,ch);
        switch(status){
        case 1:
            printf("Find it.
    ");break;
        case 0:
            printf("Not find it.
    ");
        }
        destroyLinkList(head);
    
        return 0;
    }
  • 相关阅读:
    NGUI UIEventListener
    Unity3d NGUI Panel 滑动菜单
    NGUI 密码输入框
    Unity3d 时间差
    Unity3d 添加组件脚本和建菜单
    c# [HideInInspector] 属性
    c# [System.Serializable]
    Activity 生命周期
    Unity3d OnApplicationPause与OnApplicationFocus
    C# 中 Struct 与 Class 的区别
  • 原文地址:https://www.cnblogs.com/plxx/p/3485146.html
Copyright © 2020-2023  润新知